CN109002694B - 一种应用代码混淆后定位问题点的方法及装置 - Google Patents

一种应用代码混淆后定位问题点的方法及装置 Download PDF

Info

Publication number
CN109002694B
CN109002694B CN201810589303.XA CN201810589303A CN109002694B CN 109002694 B CN109002694 B CN 109002694B CN 201810589303 A CN201810589303 A CN 201810589303A CN 109002694 B CN109002694 B CN 109002694B
Authority
CN
China
Prior art keywords
application
code
debugging
thread
current
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
CN201810589303.XA
Other languages
English (en)
Other versions
CN109002694A (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.)
Guangdong Genius Technology Co Ltd
Original Assignee
Guangdong Genius Technology 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 Guangdong Genius Technology Co Ltd filed Critical Guangdong Genius Technology Co Ltd
Priority to CN201810589303.XA priority Critical patent/CN109002694B/zh
Publication of CN109002694A publication Critical patent/CN109002694A/zh
Application granted granted Critical
Publication of CN109002694B publication Critical patent/CN109002694B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Abstract

本发明公开了一种应用代码混淆后定位问题点的方法及装置,该方法包括:当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,线程信息至少包括线程标识以及与线程标识对应的调用栈信息;从存储的tombstone文件中确定崩溃线程的目标线程标识,以及从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及该某一线程标识对应的调用栈信息;根据该某一线程标识对应的调用栈信息确定问题点,并显示该问题点,其中,该问题点包括导致当前应用运行崩溃的代码行标识。可见,实施本发明实施例能够自动定位出应用混淆后运行崩溃的问题点,效率高。

Description

一种应用代码混淆后定位问题点的方法及装置
技术领域
本发明涉及计算机软件技术领域,具体涉及一种应用代码混淆后定位问题点的方法及装置。
背景技术
当前,应用项目开发完成且经测试人员测试不存在BUG之后,为了避免出现盗版、提高应用安全性,技术人员需对一款应用进行代码混淆,即:将应用的代码转换成一种功能上等价但难于阅读和理解的形式,如将代码中各种元素(变量、函数、类的名字等)改写成无意义的名字,使破解者在阅读时无法根据名字猜测其用途,增加反编译的阅读难度。但是,经过代码混淆后的应用会出现运行崩溃(如出现段错误)的情况,当出现这类情况时,快速的定位出运行崩溃的原因(即问题点)显得尤为重要。实践发现,当前主要是通过有经验的技术人员分析问题点,效率低。
发明内容
本发明实施例公开了一种应用代码混淆后定位问题点的方法及装置,能够自动定位出应用混淆后运行崩溃的问题点,效率高。
本发明实施例第一方面公开了一种应用代码混淆后定位问题点的方法,所述方法包括:
当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息,所述线程信息至少包括线程标识以及与所述线程标识对应的调用栈信息;
从存储的tombstone文件中确定崩溃线程的目标线程标识,并从所有所述线程信息中匹配得到与所述目标线程标识相同的某一线程标识以及所述某一线程标识对应的调用栈信息;
根据所述某一线程标识对应的调用栈信息确定问题点,并显示所述问题点,所述问题点包括导致所述当前应用运行崩溃的代码行标识。
作为一种可选的实施方式,在本发明实施例第一方面中,所述方法还包括:
当检测到代码混淆后的当前应用运行崩溃时,确定所述当前应用的代码的当前版本,并判断所述当前版本是否为最新版本;
如果所述当前版本为所述最新版本,则触发执行所述的向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
所述方法还包括:
如果所述当前版本不为所述最新版本,判断所述最新版本的应用代码是否开发完毕,如果还未开发完毕,则触发执行所述的向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
如果已开发完毕,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
作为一种可选的实施方式,在本发明实施例第一方面中,在判断出所述最新版本的应用代码已开发完毕之后,所述方法还包括:
确定所述最新版本的应用代码的授权发布标识,并判断所述授权发布标识是否表示允许发布所述最新版本的应用代码,如果表示允许发布所述最新版本的应用代码,则触发执行所述的按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
作为一种可选的实施方式,在本发明实施例第一方面中,所述显示所述问题点之后,所述方法还包括:
检测在显示所述问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
如果未检测到所述确认调试操作,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式,并确定所述所有调试人员的值班时间;
从所述所有调试人员中确定出值班时间包括所述当前时间的目标调试人员的目标通信方式;
根据所述目标通信方式向所述目标调试人员对应的通信设备发送调试提示信息,所述调试提示信息用于提示所述目标调试人员调试所述当前应用。
作为一种可选的实施方式,在本发明实施例第一方面中,在未检测到所述确认调试操作之后,所述方法还包括:
根据所述某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个所述潜在问题类型的严重等级;
根据每个所述潜在问题类型的严重等级识别所有所述潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型,如果识别出存在所述目标潜在问题类型,则执行所述的查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式以及值班时间。
本发明实施例第二方面公开了一种应用代码混淆后定位问题点的装置,所述装置包括第一发送单元、确定单元、匹配单元以及显示单元,其中:
所述第一发送单元,用于当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息,所述线程信息至少包括线程标识以及与所述线程标识对应的调用栈信息;
所述确定单元,用于从存储的tombstone文件中确定崩溃线程的目标线程标识;
匹配单元,用于从所有所述线程信息中匹配得到与所述目标线程标识相同的某一线程标识以及所述某一线程标识对应的调用栈信息;
所述确定单元,还用于根据所述某一线程标识对应的调用栈信息确定问题点,所述问题点包括导致所述当前应用运行崩溃的代码行标识;
所述显示单元,用于显示所述问题点。
作为一种可选的实施方式,在本发明实施例第二方面中,所述确定单元,还用于当检测到代码混淆后的当前应用运行崩溃时,确定所述当前应用的代码的当前版本;
所述装置还包括判断单元,其中:
所述判断单元,用于判断所述当前版本是否为最新版本;
所述第一发送单元,具体用于当检测到代码混淆后的当前应用运行崩溃时,以及当所述判断单元判断出所述当前版本为所述最新版本时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
所述判断单元,还用于当判断出所述当前版本不为所述最新版本,判断所述最新版本的应用代码是否开发完毕;
第二发送单元,用于当检测到代码混淆后的当前应用运行崩溃时、当所述判断单元判断出所述当前版本不为所述最新版本以及所述最新版本的应用代码未开发完毕时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
混淆单元,用于当检测到代码混淆后的当前应用运行崩溃时、当所述判断单元判断出所述当前版本不为所述最新版本以及所述最新版本的应用代码已开发完毕时,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
作为一种可选的实施方式,在本发明实施例第二方面中,所述确定单元,还用于在所述判断单元判断出所述最新版本的应用代码已开发完毕之后,确定所述最新版本的应用代码的授权发布标识;
所述判断单元,还用于判断所述授权发布标识是否表示允许发布所述最新版本的应用代码;
所述混淆单元,具体用于当检测到代码混淆后的当前应用运行崩溃时以及当所述判断单元判断出所述当前版本不为所述最新版本、所述最新版本的应用代码已开发完毕以及所述授权发布标识表示允许发布所述最新版本的应用代码时,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
作为一种可选的实施方式,在本发明实施例第二方面中,所述装置还包括:
检测单元,用于在所述显示单元显示所述问题点之后,检测在显示所述问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
查找单元,用于在所述检测单元未检测到所述确认调试操作时,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式;
所述确定单元,还用于确定所述所有调试人员的值班时间,以及从所述所有调试人员中确定出值班时间包括所述当前时间的目标调试人员的目标通信方式;
通信单元,用于根据所述目标通信方式向所述目标调试人员对应的通信设备发送调试提示信息,所述调试提示信息用于提示所述目标调试人员调试所述当前应用。
作为一种可选的实施方式,在本发明实施例第二方面中,所述确定单元,还用于根据所述某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个所述潜在问题类型的严重等级;
所述装置还包括识别单元,其中:
所述识别单元,用于根据每个所述潜在问题类型的严重等级识别所有所述潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型;
所述查找单元,具体用于在所述识别单元识别出存在所述目标潜在问题类型,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式以及值班时间。
本发明实施例第三方面公开了另一种应用代码混淆后定位问题点的装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面公开的任意一种方法中的全部或部分步骤。
本发明实施例第四方面公开了一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行本发明实施例第一方面公开的任意一种方法中的全部或部分步骤。
本发明实施例第五方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面的任意一种方法的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例中,当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,线程信息至少包括线程标识以及与线程标识对应的调用栈信息;从存储的tombstone文件中确定崩溃线程的目标线程标识,以及从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及该某一线程标识对应的调用栈信息;根据该某一线程标识对应的调用栈信息确定问题点,并显示该问题点,其中,该问题点包括导致当前应用运行崩溃的代码行标识。可见,实施本发明实施例能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种应用代码混淆后定位问题点的方法的流程示意图;
图2是本发明实施例公开的另一种应用代码混淆后定位问题点的流程示意图;
图3是本发明实施例公开的一种应用代码混淆后定位问题点的装置的结构示意图;
图4是本发明实施例公开的另一种应用代码混淆后定位问题点的装置的结构示意图;
图5是本发明实施例公开的又一种应用代码混淆后定位问题点的装置的结构示意图;
图6是本发明实施例公开的又一种应用代码混淆后定位问题点的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例公开了一种应用代码混淆后定位问题点的方法及装置,能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。以下分别进行详细说明。
实施例一
请参阅图1,图1是本发明实施例公开的一种应用代码混淆后定位问题点的方法的流程示意图。其中,图1所示的方法可以应用于应用调试设备中。如图1所示,该应用代码混合后定位问题点的方法可以包括以下操作:
101、当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,每个线程信息至少包括线程标识以及与线程标识对应的调用栈信息。
本发明实施例中,该当前应用可以为安卓类应用,且可以运行在使用Android系统的终端设备中,如电话手表、智能手机等,本发明实施例不做限定。
本发明实施例中,该驱动信号可以包括运行崩溃的当前应用的应用标识,以供Java虚拟机根据该应用标识确定运行崩溃的当前应用并收集当前应用的所有线程信息,其中,每个线程的线程信息可以至少包括该线程的线程标识(thread ID)以及与该线程的线程标识所对应的调用栈信息,且该调用栈信息可以具体为对应线程的代码段中的一些字符,如变量、函数以及类名等。
本发明实施例中,在某一时刻可能存在代码混淆后运行崩溃的多个应用,则该驱动信号可以包括多个应用中每个应用的应用标识且用于触发Java虚拟机根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息。进一步的,Java虚拟机在接收到驱动信号后,可以先确定驱动信号中所包括的应用标识的数量,当应用标识的数量达到预设数量阈值时,根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息;当应用标识的数量未达到预设数量阈值(如5个)时,Java虚拟机继续接收驱动信号,直至其接收到的所有驱动信号中所包括的应用标识的数量大于等于预设数量阈值或从接收到第一个驱动信号开始计时的时长达到预设时长阈值(如5分钟等),并根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息。可见,这样能够减少Java虚拟机的收集次数。需要说明的是,当在某一时刻存在代码混淆后运行崩溃的多个应用的数量超过预设数量阈值时,应用调试设备可以分批次向Java虚拟机发送驱动信号,其中,第一批次发送的驱动信号包括的应用标识所对应应用的优先级高于第二批注发送的驱动信号包括的应用标识所对应应用的优先级,第二批次发送的驱动信号包括的应用标识所对应应用的优先级高于第三批注发送的驱动信号包括的应用标识所对应应用的优先级,依次类推,这样分批发送驱动信号的方式能够缓解Java虚拟机的处理压力,提高其处理效率。其中,应用的优先级可以是由研发人员手动设定的,也可以是应用调试设备根据应用所属类别的热度确定,如热度比较高的社交类应用,其对应的优先级也比较高。
102、从存储的tombstone文件中确定崩溃线程的目标线程标识,并从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及该某一线程标识对应的调用栈信息。
本发明实施例中,在收集完毕当前应用的所有线程信息并保存之后,再通过Debuggerd收集UserSpace信息,即从存储的tombstone文件中确定崩溃线程的目标线程标识。具体的,当代码混淆后的应用运行崩溃时,系统(如安卓系统)中会生成一个tombstone文件并保存,该tombstone文件的存储目录为/data/tombstones,且该tombstone文件记录了运行崩溃的应用(进程)的基本信息,如线程标识。
103、根据上述某一线程标识对应的调用栈信息确定问题点,并显示该问题点,该问题点包括导致当前应用运行崩溃的代码行标识。
本发明实施例中,在根据上述某一线程标识对应的调用栈信息确定问题点之后,显示该问题点供调试人员分析、修复。
在一个可选的实施例中,该应用代码混淆后定位问题点的方法还可以包括以下操作:
当检测到代码混淆后的当前应用运行崩溃时,确定当前应用的代码的当前版本,并从预先存储的针对该当前应用的不同版本的代码混淆后运行崩溃的次数获取当前应用的当前版本的代码在混淆后运行崩溃的总次数,并判断该总次数是否达到预设次数阈值,如果达到预设次数阈值,则输出提示消息,该提示消息用于提示更换当前应用的当前版本的代码的混淆规则。
可见,本发明实施例中,在检测到代码混淆后的应用程序发生崩溃之后,根据代码的版本获取应用在代码混淆后的崩溃总次数,如果次数较多,则默认代码混淆规则可能存在问题,并及时提醒调试人员或技术人员更换混淆规则,有利于及时发现代码混淆后运行崩溃的具体原因。
可见,实施图1所示的应用代码混合后定位问题点的方法能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。
实施例二
请参阅图2,图2是本发明实施例公开的另一种应用代码混淆后定位问题点的方法的流程示意图。其中,图2所示的方法可以应用于应用调试设备中。如图2所示,该应用代码混合后定位问题点的方法可以包括以下操作:
201、当检测到代码混淆后的当前应用运行崩溃时,确定当前应用的代码的当前版本。
202、判断当前版本是否为最新版本,当步骤202的判断结果为是时,触发执行步骤204;当判断结果为否时,触发执行步骤203。
本发明实施例中,当步骤202的判断结果为是时,应用调试设备确认当前应用运行崩溃的问题未被修复,并触发执行步骤204;当步骤202的判断结果为否时,应用调试设备确认当前应用运行崩溃的问题可能会在最新版本的代码中得到修复,并触发执行步骤203。
203、判断最新版本的应用代码是否开发完毕,当步骤203的判断结果为否时,触发执行步骤204;当步骤203判断结果为是时,触发执行步骤207。
本发明实施例中,当步骤203的判断结果为否时,应用调试设备确认当前应用运行崩溃的问题还未在最新版本的代码中得到修复,并触发执行步骤204;当步骤203的判断结果为是时,应用调试设备确认当前应用运行崩溃的问题在最新版本的代码中得到修复,并触发执行步骤207。
204、向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,每个线程信息至少包括线程标识以及与线程标识对应的调用栈信息。
205、从存储的tombstone文件中确定崩溃线程的目标线程标识,并从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及该某一线程标识对应的调用栈信息。
206、根据上述某一线程标识对应的调用栈信息确定问题点,并显示该问题点,该问题点包括导致当前应用运行崩溃的代码行标识。
本发明实施例中,针对步骤204-步骤206的描述,请参照实施例一的相应描述,本发明实施例不再赘述。
207、按照预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用。
本发明实施例中,该预设混淆规则可以包括布局混淆规则、数据混淆规则、控制混淆规则和预防混淆规则中的任意一种。
本发明实施例中,如果针对当前应用的最新版本的代码被开发完毕,应用调试设备可以自动根据预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用,这样无需调试人员手动触发混淆操作。
本发明实施例中,需要说明的是,在得到目标应用(该目标应用即为上述当前应用的升级版)之后,应用调试设备运行该目标应用,并在该目标应用运行崩溃时通过步骤204-步骤206中所描述的方法定位该目标应用的问题点。
可见,实施图2所描述的应用代码混淆后定位问题点的方法能够在通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点之前,根据代码的版本确定应用运行崩溃的问题是否得到解决,如果未得到解决再定位问题点,这样能够减少不必要的问题点定位操作,提高定位问题点的可靠性。
在一个可选的实施例中,当步骤203判断结果为是时,在执行步骤207之前,该应用代码混淆后定位问题点的方法还可以包括以下操作:
确定上述最新版本的应用代码的授权发布标识,并判断该授权发布标识是否表示允许发布该最新版本的应用代码,如果表示允许发布该最新版本的应用代码,则触发执行上述的按照预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用。
可见,该可选的实施例能够在对最新版本的应用代码执行混淆操作之前,先确定该最新版本的应用代码是否允许发布,如果是,确认最新版本的应用代码已通过测试,并对其执行混淆操作。这样能够提高应用调试设备执行对最新版本的应用代码执行混淆操作的可靠性。
在另一个可选的实施例中,在执行完毕步骤206之后,该应用代码混淆后定位问题点的方法还可以包括以下操作:
检测在显示上述问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
如果未检测到确认调试操作,查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式,并确定所有调试人员的值班时间;
从所有调试人员中确定出值班时间包括当前时间的目标调试人员的目标通信方式;
根据该目标通信方式向目标调试人员对应的通信设备发送调试提示信息,该调试提示信息用于提示目标调试人员调试当前应用。
其中,该提示信息可以包括上述当前应用的应用标识、上述当前应用运行崩溃的时间点、应用调试设备的设备标识以及上述问题点,以便目标调试人员及时掌握需要调试的当前应用的具体情况并制定相应的调试策略。
可见,该另一种可选的实施例能够在显示问题点之后检测调试人员是否触发了调试操作,如果未触发调试操作,则默认调试人员未注意到该问题点,并向负责调试上述当前应用且当前在值班的目标调试人员发送提示消息,以提醒目标调试人员根据问题点调试当前应用。这样能够减少因调试人员未注意到或未觉察到问题点而导致的无法及时修复问题点的情况发生。
在该另一种可选的实施例中,进一步可选的,在未检测到确认调试操作之后,该应用代码混淆后定位问题点的方法还可以包括以下操作:
根据某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个潜在问题类型的严重等级;
根据每个潜在问题类型的严重等级识别所有潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型,如果识别出存在目标潜在问题类型,则执行上述的查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式以及值班时间。
在该可选的实施例中,应用调试设备能够根据调用栈信息中的字符(变量、类名、函数名)确定所有潜在问题类型(如变量赋值错误、寻址错误、函数参数错误、函数调用错误等)以及每个潜在问题类型的严重等级(如不严重、一般严重、非常严重等)。这种根据可能出现的问题类型决定是否需要查找调试人员的通信方式以及值班时间的方式,能够减少不必要的操作,进而减少CPU资源的浪费。
可见,实施图2所示的应用代码混合后定位问题点的方法能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。
实施例三
请参阅图3,图3是本发明实施例公开的一种应用代码混淆后定位问题点的装置的结构示意图。如图3所示,该应用代码混淆后定位问题点的装置可以包括第一发送单元301、确定单元302、匹配单元303以及显示单元304,其中:
第一发送单元301,用于当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,该线程信息至少包括线程标识以及与线程标识对应的调用栈信息,并触发确定单元302启动。
本发明实施例中,在某一时刻可能存在代码混淆后运行崩溃的多个应用,则该驱动信号可以包括多个应用中每个应用的应用标识且用于触发Java虚拟机根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息。进一步的,Java虚拟机在接收到驱动信号后,可以先确定驱动信号中所包括的应用标识的数量,当应用标识的数量达到预设数量阈值时,根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息;当应用标识的数量未达到预设数量阈值(如5个)时,Java虚拟机继续接收驱动信号,直至其接收到的所有驱动信号中所包括的应用标识的数量大于等于预设数量阈值或从接收到第一个驱动信号开始计时的时长达到预设时长阈值(如5分钟等),并根据每个应用的应用标识确定运行崩溃的每个应用并收集每个应用的所有线程信息。可见,这样能够减少Java虚拟机的收集次数。需要说明的是,当在某一时刻存在代码混淆后运行崩溃的多个应用的数量超过预设数量阈值时,应用调试设备可以分批次向Java虚拟机发送驱动信号,其中,第一批次发送的驱动信号包括的应用标识所对应应用的优先级高于第二批注发送的驱动信号包括的应用标识所对应应用的优先级,第二批次发送的驱动信号包括的应用标识所对应应用的优先级高于第三批注发送的驱动信号包括的应用标识所对应应用的优先级,依次类推,这样分批发送驱动信号的方式能够缓解Java虚拟机的处理压力,提高其处理效率。
确定单元302,用于从存储的tombstone文件中确定崩溃线程的目标线程标识。
匹配单元303,用于从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及该某一线程标识对应的调用栈信息。
确定单元302,还可以用于根据某一线程标识对应的调用栈信息确定问题点,该问题点包括导致当前应用运行崩溃的代码行标识。
显示单元304,用于显示问题点。
可见,实施图3所描述的装置能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。
在一个可选的实施例中,如图4所示,该装置还可以包括判断单元305、第二发送单元306以及混淆单元307,其中:
确定单元302,还可以用于当检测到代码混淆后的当前应用运行崩溃时,确定当前应用的代码的当前版本。
判断单元305,用于判断当前版本是否为最新版本。
第一发送单元301,具体用于当检测到代码混淆后的当前应用运行崩溃时,以及当判断单元305判断出当前版本为最新版本时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息。
判断单元305,还用于当判断出当前版本不为最新版本,判断最新版本的应用代码是否开发完毕。
第二发送单元306,用于当检测到代码混淆后的当前应用运行崩溃时、当判断单元305判断出当前版本不为最新版本以及最新版本的应用代码未开发完毕时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息。
混淆单元307,用于当检测到代码混淆后的当前应用运行崩溃时、当判断单元305判断出当前版本不为最新版本以及最新版本的应用代码已开发完毕时,按照预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用。
可见,实施图4所描述的装置还能够根据代码的版本确定应用运行崩溃的问题是否得到解决,如果未得到解决再定位问题点,这样能够减少不必要的问题点定位操作,提高定位问题点的可靠性;
在该可选的实施例中,进一步可选的,确定单元302,还用于在判断单元305判断出最新版本的应用代码已开发完毕之后,确定最新版本的应用代码的授权发布标识。
判断单元305,还用于判断上述授权发布标识是否表示允许发布最新版本的应用代码。
混淆单元307,具体用于当检测到代码混淆后的当前应用运行崩溃时以及当判断单元305判断出当前版本不为最新版本、最新版本的应用代码已开发完毕以及授权发布标识表示允许发布最新版本的应用代码时,按照预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用。
可见,实施图4所描述的装置还能够根据代码的版本确定应用运行崩溃的问题是否得到解决,如果未得到解决再定位问题点,这样能够减少不必要的问题点定位操作,提高定位问题点的可靠性。
在另一个可选的实施例中,如图5所示,该装置还可以包括检测单元308、查找单元309以及通信单元310,其中:
检测单元308,用于在显示单元304显示上述问题点之后,检测在显示上述问题点之后的预设时间段内是否接收到调试人员的确认调试操作。
查找单元309,用于在检测单元308未检测到确认调试操作时,查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式。
确定单元302,还用于确定所有调试人员的值班时间,以及从所有调试人员中确定出值班时间包括当前时间的目标调试人员的目标通信方式。
通信单元310,用于根据确定单元302确定出的目标通信方式向目标调试人员对应的通信设备发送调试提示信息,该调试提示信息用于提示目标调试人员调试当前应用。
可见,实施图5所描述的装置还能够减少因调试人员未注意到或未觉察到问题点而导致的无法及时修复问题点的情况发生。
在该另一种可选的实施例中,进一步可选的,如图5所示,该装置还可以包括识别单元311,其中
确定单元302,还可以用于根据某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个潜在问题类型的严重等级。
识别单元311,用于根据每个潜在问题类型的严重等级识别所有潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型。
查找单元309,具体用于在识别单元311识别出存在目标潜在问题类型,查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式以及值班时间。
在又一个可选的实施例中,确定单元302,还可以用于当检测到代码混淆后的当前应用运行崩溃时,确定当前应用的代码的当前版本,并从预先存储的针对该当前应用的不同版本的代码混淆后运行崩溃的次数获取当前应用的当前版本的代码在混淆后运行崩溃的总次数。
判断单元306,还可以用于判断该总次数是否达到预设次数阈值。
显示单元304,还可以用于当判断单元306判断出总次数达到预设次数阈值,则输出提示消息,该提示消息用于提示更换当前应用的当前版本的代码的混淆规则。
可见,实施图5所描述的装置还能够根据可能出现的问题类型决定是否需要查找调试人员的通信方式以及值班时间,减少了不必要的操作,进而减少CPU资源的浪费,且在检测到代码混淆后的应用程序发生崩溃之后,根据代码的版本获取应用在代码混淆后的崩溃总次数,如果次数较多,则默认代码混淆规则可能存在问题,并及时提醒调试人员或技术人员更换混淆规则,有利于及时发现代码混淆后运行崩溃的具体原因。
实施例四
请参阅图6,图6是本发明实施例公开的又一种应用代码混淆后定位问题点的装置的结构示意图。如图6所示,该装置可以包括:
存储有可执行程序代码的存储器601;
与存储器601耦合的处理器602;
处理器602调用存储器601中存储的可执行程序代码,用于执行以下操作:
当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息,线程信息至少包括线程标识以及与线程标识对应的调用栈信息;
从存储的tombstone文件中确定崩溃线程的目标线程标识,并从所有线程信息中匹配得到与目标线程标识相同的某一线程标识以及某一线程标识对应的调用栈信息;
根据某一线程标识对应的调用栈信息确定问题点,并显示问题点,问题点包括导致当前应用运行崩溃的代码行标识。
可选的,处理器602调用存储器601中存储的可执行程序代码,还用于执行以下操作:
当检测到代码混淆后的当前应用运行崩溃时,确定当前应用的代码的当前版本,并判断、当前版本是否为最新版本;
如果当前版本为最新版本,则触发执行的向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息;
如果当前版本不为最新版本,判断最新版本的应用代码是否开发完毕,如果还未开发完毕,则触发执行的向Java虚拟机发送驱动信号,以驱动Java虚拟机收集当前应用的所有线程信息;
如果已开发完毕,按照预设混淆规则对最新版本的应用代码执行混淆操作,得到目标应用。
可选的,处理器602调用存储器601中存储的可执行程序代码,还用于执行以下操作:
在判断出最新版本的应用代码已开发完毕之后,检测在显示问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
如果未检测到确认调试操作,查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式,并确定所有调试人员的值班时间;
从所有调试人员中确定出值班时间包括当前时间的目标调试人员的目标通信方式;
根据目标通信方式向目标调试人员对应的通信设备发送调试提示信息,调试提示信息用于提示目标调试人员调试当前应用。
可选的,处理器602调用存储器601中存储的可执行程序代码,还用于执行以下操作:
在未检测到确认调试操作之后,根据某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个潜在问题类型的严重等级;
根据每个潜在问题类型的严重等级识别所有潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型,如果识别出存在目标潜在问题类型,则执行的查找预先存储的调试通信录中负责调试当前应用的所有调试人员的通信方式以及值班时间。
可见,实施图6所描述的装置能够通过Java虚拟机收集的进程信息以及tombstone文件中记录的崩溃线程的信息,自动定位出应用的代码混淆后运行崩溃的问题点,提高了发现问题点的效率,进而提高了问题点的修复效率。
实施例五
本发明实施例公开了一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,该计算机程序使得计算机执行图1或图2所描述的应用代码混淆后定位问题点的方法中的步骤。
实施例八
本发明实施例公开了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可操作来使计算机执行图1或图2所描述的应用代码混淆后定位问题点的方法中的步骤。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在本发明所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。上述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明的各个实施例上述方法的部分或全部步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上对本发明实施例公开的一种应用代码混淆后定位问题点的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种应用代码混淆后定位问题点的方法,其特征在于,所述方法包括:
当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息,所述线程信息至少包括线程标识以及与所述线程标识对应的调用栈信息;
从存储的tombstone文件中确定崩溃线程的目标线程标识,并从所有所述线程信息中匹配得到与所述目标线程标识相同的某一线程标识以及所述某一线程标识对应的调用栈信息;
根据所述某一线程标识对应的调用栈信息确定问题点,并显示所述问题点,所述问题点包括导致所述当前应用运行崩溃的代码行标识;
所述当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,包括:
当在同一时刻检测到代码混淆后运行崩溃的应用数量超过预设数量阈值时,分批次向Java虚拟机发送驱动信号,以驱动所述Java虚拟机依次收集每个代码混淆后运行崩溃的应用的所有线程信息,第一批次发送的驱动信号所对应应用的使用热度高于第二批次发送的驱动信号所对应应用的使用热度。
2.根据权利要求1所述的应用代码混淆后定位问题点的方法,其特征在于,所述方法还包括:
当检测到代码混淆后的当前应用运行崩溃时,确定所述当前应用的代码的当前版本,并判断所述当前版本是否为最新版本;
如果所述当前版本为所述最新版本,则触发执行所述的向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
所述方法还包括:
如果所述当前版本不为所述最新版本,判断所述最新版本的应用代码是否开发完毕,如果还未开发完毕,则触发执行所述的向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
如果已开发完毕,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
3.根据权利要求2所述的应用代码混淆后定位问题点的方法,其特征在于,在判断出所述最新版本的应用代码已开发完毕之后,所述方法还包括:
确定所述最新版本的应用代码的授权发布标识,并判断所述授权发布标识是否表示允许发布所述最新版本的应用代码,如果表示允许发布所述最新版本的应用代码,则触发执行所述的按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
4.根据权利要求1-3任一项所述的应用代码混淆后定位问题点的方法,其特征在于,所述显示所述问题点之后,所述方法还包括:
检测在显示所述问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
如果未检测到所述确认调试操作,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式,并确定所述所有调试人员的值班时间;
从所述所有调试人员中确定出值班时间包括当前时间的目标调试人员的目标通信方式;
根据所述目标通信方式向所述目标调试人员对应的通信设备发送调试提示信息,所述调试提示信息用于提示所述目标调试人员调试所述当前应用。
5.根据权利要求4所述的应用代码混淆后定位问题点的方法,其特征在于,在未检测到所述确认调试操作之后,所述方法还包括:
根据所述某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个所述潜在问题类型的严重等级;
根据每个所述潜在问题类型的严重等级识别所有所述潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型,如果识别出存在所述目标潜在问题类型,则执行所述的查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式以及值班时间。
6.一种应用代码混淆后定位问题点的装置,其特征在于,所述装置包括第一发送单元、确定单元、匹配单元以及显示单元,其中:
所述第一发送单元,用于当检测到代码混淆后的当前应用运行崩溃时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息,所述线程信息至少包括线程标识以及与所述线程标识对应的调用栈信息;
所述确定单元,用于从存储的tombstone文件中确定崩溃线程的目标线程标识;
匹配单元,用于从所有所述线程信息中匹配得到与所述目标线程标识相同的某一线程标识以及所述某一线程标识对应的调用栈信息;
所述确定单元,还用于根据所述某一线程标识对应的调用栈信息确定问题点,所述问题点包括导致所述当前应用运行崩溃的代码行标识;
所述显示单元,用于显示所述问题点;
所述第一发送单元,还用于当在同一时刻检测到代码混淆后运行崩溃的应用数量超过预设数量阈值时,分批次向Java虚拟机发送驱动信号,以驱动所述Java虚拟机依次收集每个代码混淆后运行崩溃的应用的所有线程信息,第一批次发送的驱动信号所对应应用的使用热度高于第二批次发送的驱动信号所对应应用的使用热度。
7.根据权利要求6所述的应用代码混淆后定位问题点的装置,其特征在于,所述确定单元,还用于当检测到代码混淆后的当前应用运行崩溃时,确定所述当前应用的代码的当前版本;
所述装置还包括判断单元,其中:
所述判断单元,用于判断所述当前版本是否为最新版本;
所述第一发送单元,具体用于当检测到代码混淆后的当前应用运行崩溃时,以及当所述判断单元判断出所述当前版本为所述最新版本时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
所述判断单元,还用于当判断出所述当前版本不为所述最新版本,判断所述最新版本的应用代码是否开发完毕;
第二发送单元,用于当检测到代码混淆后的当前应用运行崩溃时、当所述判断单元判断出所述当前版本不为所述最新版本以及所述最新版本的应用代码未开发完毕时,向Java虚拟机发送驱动信号,以驱动所述Java虚拟机收集所述当前应用的所有线程信息;
混淆单元,用于当检测到代码混淆后的当前应用运行崩溃时、当所述判断单元判断出所述当前版本不为所述最新版本以及所述最新版本的应用代码已开发完毕时,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
8.根据权利要求7所述的应用代码混淆后定位问题点的装置,其特征在于,所述确定单元,还用于在所述判断单元判断出所述最新版本的应用代码已开发完毕之后,确定所述最新版本的应用代码的授权发布标识;
所述判断单元,还用于判断所述授权发布标识是否表示允许发布所述最新版本的应用代码;
所述混淆单元,具体用于当检测到代码混淆后的当前应用运行崩溃时以及当所述判断单元判断出所述当前版本不为所述最新版本、所述最新版本的应用代码已开发完毕以及所述授权发布标识表示允许发布所述最新版本的应用代码时,按照预设混淆规则对所述最新版本的应用代码执行混淆操作,得到目标应用。
9.根据权利要求6-8任一项所述的应用代码混淆后定位问题点的装置,其特征在于,所述装置还包括:
检测单元,用于在所述显示单元显示所述问题点之后,检测在显示所述问题点之后的预设时间段内是否接收到调试人员的确认调试操作;
查找单元,用于在所述检测单元未检测到所述确认调试操作时,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式;
所述确定单元,还用于确定所述所有调试人员的值班时间,以及从所述所有调试人员中确定出值班时间包括当前时间的目标调试人员的目标通信方式;
通信单元,用于根据所述目标通信方式向所述目标调试人员对应的通信设备发送调试提示信息,所述调试提示信息用于提示所述目标调试人员调试所述当前应用。
10.根据权利要求9所述的应用代码混淆后定位问题点的装置,其特征在于,所述确定单元,还用于根据所述某一线程标识对应的调用栈信息,确定所有潜在问题类型以及每个所述潜在问题类型的严重等级;
所述装置还包括识别单元,其中:
所述识别单元,用于根据每个所述潜在问题类型的严重等级识别所有所述潜在问题类型中是否存在严重等级超过预设严重等级阈值的目标潜在问题类型;
所述查找单元,具体用于在所述识别单元识别出存在所述目标潜在问题类型,查找预先存储的调试通信录中负责调试所述当前应用的所有调试人员的通信方式以及值班时间。
CN201810589303.XA 2018-06-08 2018-06-08 一种应用代码混淆后定位问题点的方法及装置 Active CN109002694B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810589303.XA CN109002694B (zh) 2018-06-08 2018-06-08 一种应用代码混淆后定位问题点的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810589303.XA CN109002694B (zh) 2018-06-08 2018-06-08 一种应用代码混淆后定位问题点的方法及装置

Publications (2)

Publication Number Publication Date
CN109002694A CN109002694A (zh) 2018-12-14
CN109002694B true CN109002694B (zh) 2021-01-26

Family

ID=64600633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810589303.XA Active CN109002694B (zh) 2018-06-08 2018-06-08 一种应用代码混淆后定位问题点的方法及装置

Country Status (1)

Country Link
CN (1) CN109002694B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220535A (zh) * 2021-05-31 2021-08-06 北京马赫谷科技有限公司 程序异常的处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data
CN105843741B (zh) * 2016-03-24 2020-04-28 腾讯科技(深圳)有限公司 应用程序的信息处理方法和装置
CN108073499B (zh) * 2016-11-10 2020-09-29 腾讯科技(深圳)有限公司 应用程序的测试方法及装置

Also Published As

Publication number Publication date
CN109002694A (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
CN107193750B (zh) 一种脚本录制方法和装置
CN106598835B (zh) 一种应用的测试方法及装置、系统
CN106294102B (zh) 应用程序的测试方法、客户端、服务器及系统
CN111708584A (zh) 一种车辆诊断方法、装置、诊断设备及存储介质
CN108197476B (zh) 一种智能终端设备的漏洞检测方法及装置
CN109543417B (zh) 一种基于Qemu平台的漏洞挖掘方法和装置
CN111693089A (zh) 装配线的产品质量控制方法、装置、设备及存储介质
CN108009085B (zh) 渠道包测试方法
CN109002694B (zh) 一种应用代码混淆后定位问题点的方法及装置
CN115543827A (zh) 一种埋点数据展示方法及装置
CN111176917B (zh) 一种cpu sst-bf功能稳定性测试方法、系统、终端及存储介质
CN110688173B (zh) 一种跨平台界面框架中组件的定位方法、装置及电子设备
CN111538994A (zh) 一种系统安全检测及修复方法、装置、存储介质及终端
CN108959931B (zh) 漏洞检测方法及装置、信息交互方法及设备
CN110633196A (zh) 应用程序的自动化用例执行方法和装置
CN115840707A (zh) 一种刷写测试方法、装置及介质
CN115756934A (zh) 一种应用崩溃分析方法及装置
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
CN115587359A (zh) 应用程序包的权限检测方法、装置、电子设备及存储介质
CN109388571B (zh) 获取标识信息的方法、装置、计算机设备及存储介质
CN109697356B (zh) 应用软件权限适配方法及装置
CN112286803A (zh) 一种测试用例的检测方法及装置
CN112612698A (zh) 应用程序崩溃测试方法及相关产品
CN111638888B (zh) 一种安卓应用程序包apk的安装方法以及第一终端
CN110569189A (zh) 回归测试的方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant