CN105630659B - 应用崩溃日志的获取方法及装置 - Google Patents

应用崩溃日志的获取方法及装置 Download PDF

Info

Publication number
CN105630659B
CN105630659B CN201510979784.1A CN201510979784A CN105630659B CN 105630659 B CN105630659 B CN 105630659B CN 201510979784 A CN201510979784 A CN 201510979784A CN 105630659 B CN105630659 B CN 105630659B
Authority
CN
China
Prior art keywords
application
file
daily record
crashes
collapse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510979784.1A
Other languages
English (en)
Other versions
CN105630659A (zh
Inventor
吴乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510979784.1A priority Critical patent/CN105630659B/zh
Publication of CN105630659A publication Critical patent/CN105630659A/zh
Application granted granted Critical
Publication of CN105630659B publication Critical patent/CN105630659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了应用崩溃日志的获取方法及装置,其中,应用崩溃日志的获取方法包括:将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;运行所述壳程序文件;判断所述应用是否发生崩溃;若是,则通过所述守护文件获取所述应用的崩溃信息。本发明中应用的壳程序文件中不仅包括应用程序文件,还将守护文件作为代码数据写入应用的壳程序文件中,从而在运行所述壳程序文件时,若应用发生崩溃,能够通过守护文件获取该应用的崩溃信息。在保护应用程序文件的基础上,能够快速准确的获取文件的崩溃信息,定位发生崩溃的位置,方便后续对发生崩溃的文件中的Bug进行清除,提高应用运行的稳定性。

Description

应用崩溃日志的获取方法及装置
技术领域
本发明涉及互联网技术,尤其是一种应用崩溃日志的获取方法及装置。
背景技术
安卓平台发展迅速,已经逐渐成为了移动终端的最普及的操作系统,与其他终端操作系统相比,开放式的安卓系统为应用开发者提供了更多的功能接口,这些功能接口在提高了系统的可扩展性,但同时也为恶意软件提供了便利。针对安卓系统的木马等恶意软件可以通过伪装的方式保存在安卓安装包中,骗取用户安装并授予一定的权限,之后通过滥用权限在后台执行一些特定行为,包括窃取用户隐私、骗取资费等行为;不仅如此,对于一些正常的安卓系统应用,也存在通过非法拷贝、逆向工程、反编译、调试、破解、二次打包、内存截取等手段来威胁安卓系统的安全,不仅危害了使用者,也给正常应用开发者造成严重的损害。
目前市面上针对安卓安装包的保护主要是基于对dex文件的保护,一般是通过对dex文件进行加密和混淆等处理手段来实现,在安卓安装包运行时再动态解密,还原内容。但是由于dex文件的反编译难度较低,很容易被反编译工具轻易逆向,导致该类方案始终无法完全解决安卓安装包面临的安全问题,开发者们也一直在寻求更有效的解决方案。
为解决上述问题,现有技术提供了各种各样的对安卓安装包中文件进行保护的方法。以360提供的加固保为例,其在实现安卓安装包中文件的保护时,包括:将对安卓安装包实现加密保护的代码(对安卓安装包中的dex文件进行加密保护的代码,或者,安卓安装包中的dex文件核心代码)保存到所述安卓安装包的lib目录下的SO文件中;将待保护的SO文件作为代码数据写入壳程序文件中;对所述壳程序文件中的所述SO文件进行加固保护处理;将进行加固保护处理后的SO文件和所述安卓安装包的其他部分(包括dex文件)重新打包生成加固安装包。
上述安卓安装包中文件保护方法能够有效阻止恶意程序对SO文件的反汇编分析,提高安卓安装包的安全等级,以及保护开发者和使用者的利益。但是,任何一个安卓安装包都无法保证不存在缺陷(即Bug),Bug的存在导致安卓安装包在运行过程中出现崩溃,应用程序的稳定性差,给用户应用程序的使用过程造成诸多不便。然而上述文件保护方法无法确定发生崩溃的位置,更无法对发生崩溃的文件中Bug进行清除,应用程序的崩溃难于消除。
因此,如何方便快捷的获取应用程序在运行过程中的崩溃日志,及时了解产生崩溃位置,减少崩溃成为当前亟待解决的问题之一。
发明内容
本申请实施例提供了一种应用崩溃日志的获取方法及装置,以解决现有无法确定发生崩溃的位置,更无法对发生崩溃的文件中Bug进行清除,应用程序的崩溃难于消除的技术问题。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
根据本申请实施例的一个方面,提供了一种应用崩溃日志的获取方法,该应用崩溃日志的获取方法包括:
将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
运行所述壳程序文件;
判断所述应用是否发生崩溃;
若是,则通过所述守护文件获取所述应用的崩溃信息。
在基于上述方法的另一个实施例中,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
在基于上述方法的另一个实施例中,判断所述应用是否发生崩溃包括:
启动所述壳程序文件,并运行所述壳程序文件中的守护文件;
守护进程在主进程中注册各类崩溃信息对应的信号,所述守护进程与所述守护程序文件对应,所述主进程与所述壳程序文件对应;
运行所述应用程序文件;
在所述主进程获取所述信号时,确定所述应用发生崩溃。
在基于上述方法的另一个实施例中,通过所述守护文件获取所述应用的崩溃信息包括:
所述守护进程与所述主进程进行信息交互;
所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息。
在基于上述方法的另一个实施例中,所述守护进程通过handler与所述主进程进行信息交互。
在基于上述方法的另一个实施例中,所述SO文件包括debug代码;所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息包括:
所述守护进程与所述崩溃进程进行交互,利用所述SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
在基于上述方法的另一个实施例中,所述守护进程通过ptrace系统接口与所述崩溃进程进行交互。
在基于上述方法的另一个实施例中,在通过所述守护文件获取所述应用的崩溃信息之后,所述应用崩溃日志的获取方法还包括:将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
在基于上述方法的另一个实施例中,每隔预设时间,通过邮件将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
根据本发明实施例的另一个方面,提供一种应用崩溃日志的获取装置,包括:
写入单元,用于将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
处理单元,用于运行所述壳程序文件,以及确定所述应用是否发生崩溃;
获取单元,用于在所述应用发生崩溃时,通过所述守护文件获取所述应用的崩溃信息。
在本申请实施例中,应用的壳程序文件中不仅包括应用程序文件,还将守护文件作为代码数据写入应用的壳程序文件中,从而在运行所述壳程序文件时,若应用发生崩溃,能够通过守护文件获取该应用的崩溃信息。在保护应用程序文件的基础上,能够快速准确的获取文件的崩溃信息,定位发生崩溃的位置,方便后续对发生崩溃的文件中Bug进行清除,提高应用运行的稳定性。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明一实施例中的应用崩溃日志的获取方法的流程图;
图2为图1中判断应用是否发生崩溃的流程图;
图3为本发明另一实施例中的应用崩溃日志的获取方法的流程图;
图4为本发明一实施例中的应用崩溃日志的获取装置的示意图;
图5为本发明图4实施例中的处理单元的示意图;
图6为本发明图4实施例中的获取单元的示意图;
图7为本发明另一实施例中的应用崩溃日志的获取装置的示意图;
图8为本发明图7实施例中的信息发送单元的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的每个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本发明一实施例中的应用崩溃日志的获取方法的流程图。图1中应用崩溃日志的获取方法包括:
S102,将守护文件作为代码数据写入应用的壳程序文件中,壳程序文件还包括应用程序文件;
S104,运行壳程序文件;
S106,判断应用是否发生崩溃;
在S106中,若应用发生崩溃,则执行S108。
S108,通过所述守护文件获取所述应用的崩溃信息。
本实施例中,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。SO文件是指linux下的库文件,后缀为.so,因此得名。SO文件是ELF格式的动态链接库文件,该类文件在程序运行需要的时候才动态加载到程序中,支持程序的运行。
壳程序文件为对应用程序文件(即安卓安装包,Android application packagefile,简称为APK,其为ZIP文件格式,但后缀名被修改成.apk,可以通过Unzip等工具解压看到其内部文件结构)加壳处理后形成的程序文件,实现了对SO文件的多重保护,可阻止恶意程序对SO文件的反汇编分析,提高SO文件的内容的安全等级,以及提高应用程序文件运行的稳定性。壳程序文件中包含能够对加保护处理后的SO文件进行解密处理的代码。在加载运行SO文件时,壳程序文件会先于SO文件运行,取得优先权,对加保护处理后的SO文件进行解密处理,使得SO文件的源代码恢复为完整的、代码排序正常的、无加密的、可完全还原的代码,进而在解壳后可以正常的加载运行。
本实施例中,崩溃信息可包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种。
本实施例中,应用发生崩溃的原因可为应用程序中存在缺陷(Bug),也可以为壳程序文件中存在Bug。
在本申请实施例中,应用的壳程序文件中不仅包括应用程序文件,还将守护文件作为代码数据写入应用的壳程序文件中,从而在运行所述壳程序文件时,若应用发生崩溃,能够通过守护文件获取该应用的崩溃信息。在保护应用程序文件的基础上,能够快速准确的获取文件的崩溃信息,定位发生崩溃的位置,方便后续对发生崩溃的文件中的Bug进行清除,提高应用运行的稳定性。
图2为图1中判断应用是否发生崩溃的流程图,图2中判断应用是否发生崩溃进一步包括:
S202,启动壳程序文件,并运行壳程序文件中的守护文件;
S204,守护进程在主进程中注册各类崩溃信息对应的信号,守护进程与守护程序文件对应,主进程与壳程序文件对应;
S206,运行应用程序文件;
S208,在主进程获取所述信号时,确定应用发生崩溃。
在另一个实施例中,图1中S108通过所述守护文件获取所述应用的崩溃信息可进一步包括:
守护进程与主进程进行信息交互;
守护进程根据主进程获取的信号确定崩溃进程,获取应用的崩溃信息。
具体的,守护进程通过handler与主进程进行信息交互。Handler能够接受守护线程发送的数据,并用此数据配合主线程更新。
在再一个实施例中,所述SO文件还包括debug代码。此时,守护进程根据主进程获取的信号确定崩溃进程,获取应用的崩溃信息可包括:
守护进程与崩溃进程进行交互,利用SO文件中debug代码通过系统调用栈(backtrace,追踪函数)逐步回溯,直至回溯失败,确定崩溃函数的位置。
本实施例中,守护进程通过ptrace系统接口与崩溃进程进行交互。Ptrate能够提供了主进程观察和控制其子进程(本实施例中对应守护进程)执行的能力,并允许主进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是:当使用了ptrace跟踪后,所有发送给被跟踪的子进程的信号(除了SIGKILL,SIGKILL信号不能被捕捉、封锁或者忽略),都会被转发给主进程,而子进程则会被阻塞,这时子进程的状态就会被系统标注为TASK_TRACED。而主进程收到信号后,就可以对停止下来的子进程进行检查和修改,然后让子进程继续运行。
与上一实施例相比,本实施例能够利用SO文件中debug代码通过系统调用栈逐步回溯,以在应用崩溃时定位崩溃函数的位置,方便后续Bug的查找和修改,进而提高壳程序文件与应用程序的兼容性以及应用运行的稳定性。
图3为本发明另一实施例中的应用崩溃日志的获取方法的流程图。图3中应用崩溃日志的获取方法包括:
S302,将守护文件作为代码数据写入应用的壳程序文件中,壳程序文件还包括应用程序文件;
S304,运行壳程序文件;
S306,判断应用是否发生崩溃;
在S306中,若应用发生崩溃,则执行S308。
S308,通过所述守护文件获取所述应用的崩溃信息;
S310,将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方。
本实施例中,崩溃信息可包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种,以用于崩溃位置的确定。
与图1中实施例相比,本实施例还将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方,方便开发者及时查看崩溃信息,确定崩溃位置,以及查找崩溃原因,利于壳程序文件中Bug的及时查找和清除,提高了应用运行的稳定性。
在另一个实施例中,崩溃信息还可包括安装应用的设备型号。壳程序文件的开发方或者应用程序文件的开发方在安装应用的设备型号之后,能够将壳程序文件安装于对应的设备中,进行场景重现,便于开发方查找和清除壳程序文件中的Bug,提高应用运行的稳定性。
在再一个实施例中,每隔预设时间,通过邮件将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方。与上一实施例相比,本实施例提供了通知开发方崩溃信息的邮件,能够提醒开发者及时查看崩溃信息,确定崩溃位置,以及查找崩溃原因,利于壳代码文件中Bug的及时查找和清除,提高了应用运行的稳定性。
下面根据本申请实施例,提供了一种应用崩溃日志的获取装置。
需要说明的是,本申请实施例的应用崩溃日志的获取装置可以用于执行本申请实施例的应用崩溃日志的获取方法,根据本申请实施例的应用崩溃日志的获取方法也可以通过本申请实施例的应用崩溃日志的获取装置来执行。
图4为本发明一实施例中的应用崩溃日志的获取装置的示意图。图4中的应用崩溃日志的获取装置包括:
写入单元10,用于将守护文件作为代码数据写入应用的壳程序文件中,壳程序文件还包括应用程序文件;
处理单元20,用于运行壳程序文件,以及确定应用是否发生崩溃;
获取单元30,用于在应用发生崩溃时,通过守护文件获取应用的崩溃信息。
本实施例中,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
本实施例中,崩溃信息可包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种,以用于崩溃位置的确定。
本实施例中,应用发生崩溃的原因可为应用程序中存在缺陷(Bug),也可以为壳程序文件中存在Bug。
在本申请实施例中,应用的壳程序文件中不仅包括应用程序文件,写入单元10还将守护文件作为代码数据写入应用的壳程序文件中,从而处理单元20在运行所述壳程序文件,应用发生崩溃时,获取单元30能够通过守护文件获取该应用的崩溃信息。在保护应用程序文件的基础上,能够快速准确的获取文件的崩溃信息,定位发生崩溃的位置,方便后续对发生崩溃的文件中Bug进行清除,提高应用运行的稳定性。
图5为本发明图4实施例中的处理单元20的示意图。本实施例中,处理单元20进一步包括:
第一执行单元202,用于启动壳程序文件,并运行壳程序文件中的守护文件;
信号注册单元204,用于守护进程在主进程中注册各类崩溃信息对应的信号,守护进程与守护程序文件对应,主进程与壳程序文件对应;
第二执行单元206,用于运行应用程序文件;
崩溃确定单元208,用于在主进程获取信息时,确定应用发生崩溃。
图6为本发明图4实施例中的获取单元30的示意图。本实施例中,获取单元30进一步包括:
信息交互单元302,用于守护进程与主进程进行信息交互;
信息确定单元304,用于守护进程根据主进程获取的信号确定崩溃进程,获取应用的崩溃信息。
具体的,守护进程通过handler与主进程进行信息交互。Handler能够接受守护线程发送的数据,并用此数据配合主线程更新。
在再一个实施例中,SO文件包括debug代码。信息确定单元304在用于守护进程根据主进程获取的信号确定崩溃进程,获取应用的崩溃信息时包括:守护进程与崩溃进程进行交互,利用SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
本实施例中,守护进程通过ptrace系统接口与崩溃进程进行交互。
与上一实施例相比,本实施例信息确定单元304利用SO文件中debug代码通过系统调用栈逐步回溯,以定位应用崩溃时,崩溃函数的位置。方便后续Bug的查找和修改,进而提高壳程序文件与应用程序的兼容性以及应用运行的稳定性。
图7为本发明另一实施例中的应用崩溃日志的获取装置的示意图。与图4相比,图7中应用崩溃日志的获取装置还包括:
信息发送单元40,用于将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方。
本实施例中,崩溃信息可包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种,以用于崩溃位置的确定。
与图4中实施例相比,本实施例还通过信息发送单元40将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方,方便开发者及时查看崩溃信息,确定崩溃位置,以及查找崩溃原因,利于壳程序文件中Bug的及时查找和清除,提高了应用运行的稳定性。
在另一个实施例中,崩溃信息还可包括安装应用的设备型号。壳程序文件的开发方或者应用程序文件的开发方在安装应用的设备型号之后,能够将壳程序文件安装于对应的设备中,进行场景重现,便于开发方查找和清除壳程序文件中的Bug,提高应用运行的稳定性。
图8为本发明图7实施例中的信息发送单元的示意图。如图8所示,在另一个实施例中,信息发送单元还可包括:
时间设定单元402,用于设定预设时间;
邮件发送单元404,用于每隔预设时间,通过邮件将所获取的崩溃信息发送至壳程序文件的开发方或者应用程序文件的开发方。
与上一实施例相比,本实施例提供了通知开发方崩溃信息的邮件,能够提醒开发者及时查看崩溃信息,确定崩溃位置,以及查找崩溃原因,利于壳代码文件中Bug的及时查找和清除,提高了应用运行的稳定性。
在本申请实施例中,应用的壳程序文件中不仅包括应用程序文件,还将守护文件作为代码数据写入应用的壳程序文件中,从而在运行壳程序文件时,若应用发生崩溃,能够通过守护文件获取该应用的崩溃信息。在保护应用程序文件的基础上,能够快速准确的获取文件的崩溃信息,定位发生崩溃的位置,方便后续对发生崩溃的文件中Bug进行清除,提高应用运行的稳定性。
本发明实施例提供了以下技术方案:
1、一种应用崩溃日志的获取方法,包括:
将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
运行所述壳程序文件;
判断所述应用是否发生崩溃;
若是,则通过所述守护文件获取所述应用的崩溃信息。
2、根据1所述的应用崩溃日志的获取方法,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
3、根据1或2所述的应用崩溃日志的获取方法,判断所述应用是否发生崩溃包括:
启动所述壳程序文件,并运行所述壳程序文件中的守护文件;
守护进程在主进程中注册各类崩溃信息对应的信号,所述守护进程与所述守护程序文件对应,所述主进程与所述壳程序文件对应;
运行所述应用程序文件;
在所述主进程获取所述信号时,确定所述应用发生崩溃。
4、根据3所述的应用崩溃日志的获取方法,通过所述守护文件获取所述应用的崩溃信息包括:
所述守护进程与所述主进程进行信息交互;
所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息。
5、根据4所述的应用崩溃日志的获取方法,所述守护进程通过handler与所述主进程进行信息交互。
6、根据4所述的应用崩溃日志的获取方法,所述SO文件包括debug代码;所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息包括:
所述守护进程与所述崩溃进程进行交互,利用所述SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
7、根据6所述的应用崩溃日志的获取方法,所述守护进程通过ptrace系统接口与所述崩溃进程进行交互。
8、根据1所述的应用崩溃日志的获取方法,在通过所述守护文件获取所述应用的崩溃信息之后,所述应用崩溃日志的获取方法还包括:将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
9、根据8所述的应用崩溃日志的获取方法,每隔预设时间,通过邮件将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
10、根据1所述的应用崩溃日志的获取方法,所述崩溃信息包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种。
11、根据10所述的应用崩溃日志的获取方法,所述崩溃信息还包括安装所述应用的设备型号。
12、一种应用崩溃日志的获取装置,包括:
写入单元,用于将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
处理单元,用于运行所述壳程序文件,以及确定所述应用是否发生崩溃;
获取单元,用于在所述应用发生崩溃时,通过所述守护文件获取所述应用的崩溃信息。
13、根据12所述的应用崩溃日志的获取装置,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
14、根据12或13所述的应用崩溃日志的获取装置,所述处理单元包括:
第一执行单元,用于启动所述壳程序文件,并运行所述壳程序文件中的守护文件;
信号注册单元,用于守护进程在主进程中注册各类崩溃信息对应的信号,所述守护进程与所述守护程序文件对应,所述主进程与所述壳程序文件对应;
第二执行单元,用于运行所述应用程序文件;
崩溃确定单元,用于在所述主进程获取所述信息时,确定所述应用发生崩溃。
15、根据14所述的应用崩溃日志的获取装置,所述获取单元包括:
信息交互单元,用于守护进程与所述主进程进行信息交互;
信息确定单元,用于所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息。
16、根据15所述的应用崩溃日志的获取装置,所述守护进程通过handler与所述主进程进行信息交互。
17、根据15所述的应用崩溃日志的获取装置,所述SO文件包括debug代码;所述信息确定单元在用于所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息时包括:
所述守护进程与所述崩溃进程进行交互,利用所述SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
18、根据17所述的应用崩溃日志的获取装置,所述守护进程通过ptrace系统接口与所述崩溃进程进行交互。
19、根据12所述的应用崩溃日志的获取装置,所述应用崩溃日志的获取装置还包括:
信息发送单元,用于将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
20、根据12所述的应用崩溃日志的获取装置,所述信息发送单元包括:
时间设定单元,用于设定预设时间;
邮件发送单元,用于每隔预设时间,通过邮件将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
21、根据12所述的应用崩溃日志的获取装置,所述崩溃信息包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种。
22、根据21所述的应用崩溃日志的获取装置,所述崩溃信息还包括安装所述应用的设备型号。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

Claims (20)

1.一种应用崩溃日志的获取方法,其特征在于,包括:
将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
运行所述壳程序文件;
启动所述壳程序文件,并运行所述壳程序文件中的守护文件;
守护进程在主进程中注册各类崩溃信息对应的信号,所述守护进程与所述守护文件对应,所述主进程与所述壳程序文件对应;
运行所述应用程序文件;
在所述主进程获取所述信号时,确定所述应用发生崩溃;
若是,则通过所述守护文件获取所述应用的崩溃信息。
2.根据权利要求1所述的应用崩溃日志的获取方法,其特征在于,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
3.根据权利要求1所述的应用崩溃日志的获取方法,其特征在于,通过所述守护文件获取所述应用的崩溃信息包括:
所述守护进程与所述主进程进行信息交互;
所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息。
4.根据权利要求3所述的应用崩溃日志的获取方法,其特征在于,所述守护进程通过handler与所述主进程进行信息交互。
5.根据权利要求3所述的应用崩溃日志的获取方法,其特征在于,SO文件包括debug代码;所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息包括:
所述守护进程与所述崩溃进程进行交互,利用所述SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
6.根据权利要求5所述的应用崩溃日志的获取方法,其特征在于,所述守护进程通过ptrace系统接口与所述崩溃进程进行交互。
7.根据权利要求1所述的应用崩溃日志的获取方法,其特征在于,在通过所述守护文件获取所述应用的崩溃信息之后,所述应用崩溃日志的获取方法还包括:将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
8.根据权利要求7所述的应用崩溃日志的获取方法,其特征在于,每隔预设时间,通过邮件将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
9.根据权利要求1所述的应用崩溃日志的获取方法,其特征在于,所述崩溃信息包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种。
10.根据权利要求9所述的应用崩溃日志的获取方法,其特征在于,所述崩溃信息还包括安装所述应用的设备型号。
11.一种应用崩溃日志的获取装置,其特征在于,包括:
写入单元,用于将守护文件作为代码数据写入应用的壳程序文件中,所述壳程序文件还包括应用程序文件;
第一执行单元,用于启动所述壳程序文件,并运行所述壳程序文件中的守护文件;
信号注册单元,用于守护进程在主进程中注册各类崩溃信息对应的信号,所述守护进程与所述守护文件对应,所述主进程与所述壳程序文件对应;
第二执行单元,用于运行所述应用程序文件;
崩溃确定单元,用于在所述主进程获取所述信息时,确定所述应用发生崩溃;
获取单元,用于在所述应用发生崩溃时,通过所述守护文件获取所述应用的崩溃信息。
12.根据权利要求11所述的应用崩溃日志的获取装置,其特征在于,所述应用程序文件包括dex文件和SO文件;所述SO文件为所述应用程序文件中dex文件进行加密保护的代码或者应用程序文件中的dex文件核心代码。
13.根据权利要求11所述的应用崩溃日志的获取装置,其特征在于,所述获取单元包括:
信息交互单元,用于守护进程与所述主进程进行信息交互;
信息确定单元,用于所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息。
14.根据权利要求13所述的应用崩溃日志的获取装置,其特征在于,所述守护进程通过handler与所述主进程进行信息交互。
15.根据权利要求13所述的应用崩溃日志的获取装置,其特征在于,SO文件包括debug代码;所述信息确定单元在用于所述守护进程根据所述主进程获取的信号确定崩溃进程,获取所述应用的崩溃信息时包括:
所述守护进程与所述崩溃进程进行交互,利用所述SO文件中debug代码通过系统调用栈逐步回溯,直至回溯失败,确定崩溃函数的位置。
16.根据权利要求15所述的应用崩溃日志的获取装置,其特征在于,所述守护进程通过ptrace系统接口与所述崩溃进程进行交互。
17.根据权利要求11所述的应用崩溃日志的获取装置,其特征在于,所述应用崩溃日志的获取装置还包括:
信息发送单元,用于将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
18.根据权利要求17所述的应用崩溃日志的获取装置,其特征在于,所述信息发送单元包括:
时间设定单元,用于设定预设时间;
邮件发送单元,用于每隔预设时间,通过邮件将所获取的崩溃信息发送至所述壳程序文件的开发方或者所述应用程序文件的开发方。
19.根据权利要求11所述的应用崩溃日志的获取装置,其特征在于,所述崩溃信息包括崩溃的进程、崩溃的线程、堆栈信息、寄存器信息、调用栈信息和Map信息中的一种或几种。
20.根据权利要求19所述的应用崩溃日志的获取装置,其特征在于,所述崩溃信息还包括安装所述应用的设备型号。
CN201510979784.1A 2015-12-23 2015-12-23 应用崩溃日志的获取方法及装置 Active CN105630659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510979784.1A CN105630659B (zh) 2015-12-23 2015-12-23 应用崩溃日志的获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510979784.1A CN105630659B (zh) 2015-12-23 2015-12-23 应用崩溃日志的获取方法及装置

Publications (2)

Publication Number Publication Date
CN105630659A CN105630659A (zh) 2016-06-01
CN105630659B true CN105630659B (zh) 2018-03-20

Family

ID=56045632

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510979784.1A Active CN105630659B (zh) 2015-12-23 2015-12-23 应用崩溃日志的获取方法及装置

Country Status (1)

Country Link
CN (1) CN105630659B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708643B (zh) * 2016-11-14 2020-05-12 武汉斗鱼网络科技有限公司 异常信息处理方法及装置
CN108073495B (zh) * 2016-11-18 2020-04-21 腾讯科技(深圳)有限公司 应用程序崩溃原因的定位方法及装置
CN107741894B (zh) * 2016-11-25 2020-01-31 腾讯科技(深圳)有限公司 一种应用进程的监控方法和装置
CN106649114B (zh) * 2016-12-23 2019-05-31 北京奇虎科技有限公司 对应用程序崩溃进行定位的方法和装置
CN107861865B (zh) * 2017-08-29 2020-11-17 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质
CN111435326A (zh) * 2019-01-15 2020-07-21 北京京东尚科信息技术有限公司 一种分析崩溃日志的方法和装置
CN110515820B (zh) * 2019-08-29 2022-07-08 北京浪潮数据技术有限公司 一种服务器故障维护方法、装置、服务器及存储介质
CN112527672B (zh) * 2020-12-21 2021-10-22 北京深思数盾科技股份有限公司 一种针对加壳工具的检测方法及设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN102073489A (zh) * 2009-11-23 2011-05-25 新奥特(北京)视频技术有限公司 一种调试日志生成方法及装置
CN102768639A (zh) * 2012-06-11 2012-11-07 北京奇虎科技有限公司 操作系统内核级错误定位方法及装置
US8347021B1 (en) * 2010-04-09 2013-01-01 Google Inc. Storing application messages
KR20140050333A (ko) * 2012-10-19 2014-04-29 에스케이플래닛 주식회사 크래시 로그 리포트 제어를 위한 시스템 및 방법
CN104021321A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 软件安装包的加固保护方法和装置
CN104253704A (zh) * 2013-06-28 2014-12-31 腾讯科技(深圳)有限公司 一种上报终端日志的方法、装置和系统
CN104392181A (zh) * 2014-11-18 2015-03-04 北京奇虎科技有限公司 So文件的保护方法、装置及安卓安装包的加固方法和系统
CN104516732A (zh) * 2013-09-29 2015-04-15 北京新媒传信科技有限公司 一种应用程序崩溃报告方法和系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN102073489A (zh) * 2009-11-23 2011-05-25 新奥特(北京)视频技术有限公司 一种调试日志生成方法及装置
US8347021B1 (en) * 2010-04-09 2013-01-01 Google Inc. Storing application messages
CN102768639A (zh) * 2012-06-11 2012-11-07 北京奇虎科技有限公司 操作系统内核级错误定位方法及装置
KR20140050333A (ko) * 2012-10-19 2014-04-29 에스케이플래닛 주식회사 크래시 로그 리포트 제어를 위한 시스템 및 방법
CN104253704A (zh) * 2013-06-28 2014-12-31 腾讯科技(深圳)有限公司 一种上报终端日志的方法、装置和系统
CN104516732A (zh) * 2013-09-29 2015-04-15 北京新媒传信科技有限公司 一种应用程序崩溃报告方法和系统
CN104021321A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 软件安装包的加固保护方法和装置
CN104392181A (zh) * 2014-11-18 2015-03-04 北京奇虎科技有限公司 So文件的保护方法、装置及安卓安装包的加固方法和系统

Also Published As

Publication number Publication date
CN105630659A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
CN105630659B (zh) 应用崩溃日志的获取方法及装置
KR101759379B1 (ko) 확장된 데이터를 갖는 메모리 덤프 및 사용자 프라이버시 보호 기법
CN104834838B (zh) 防止dex文件从内存中转存的方法及装置
TW201937393A (zh) 用於安全初始化的策略編輯之系統和方法
CN105653906B (zh) 基于地址随机的反内核挂钩方法
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
CN105074671A (zh) 用于在内核模块和设备驱动程序中检测并发编程错误的方法和系统
US20070136728A1 (en) Computer readable medium in which program is stored, computer data signal embodied in carrier wave, information processing apparatus that executes program, and program control method for executing program
CN110096853A (zh) 基于Mono的Unity安卓应用加固方法、存储介质
CN108319856A (zh) 用于恶意软件检测的对应用的通用拆包
CN110532767B (zh) 面向sgx安全应用的内部隔离方法
CN106708704A (zh) 一种对崩溃日志进行分类的方法和装置
CN105335151A (zh) 安装文件的保护方法及装置
TW201945971A (zh) 用於檢查安全性能的系統和方法
CN107194287A (zh) 一种arm平台上的模块安全隔离方法
CN108197476A (zh) 一种智能终端设备的漏洞检测方法及装置
CN107450964A (zh) 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN110633073A (zh) 基于Il2cpp编译的Unity代码混淆的方法
CN112733093B (zh) 基于ring3环对抗的程序行为保护方法、系统及存储介质
JP2008234248A (ja) プログラム実行装置及びプログラム実行方法
CN106127054A (zh) 一种面向智能设备控制指令的系统级安全防护方法
CN110298175A (zh) 一种dll文件的处理方法及相关装置
US20220308991A1 (en) Test processing method and information processing apparatus
CN104615935B (zh) 一种面向Xen虚拟化平台的隐藏方法
CN106155940A (zh) 可保护代码的系统芯片与系统芯片的代码保护方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220719

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right