程序漏洞的定位方法、装置、计算机设备及可读存储介质与流程

文档序号:14688010发布日期:2018-06-15 06:44阅读:194来源:国知局

本发明涉及息安全技术领域,特别是涉及一种程序漏洞的定位方法、装置、计算机设备及可读存储介质。



背景技术:

在网络项目版本的迭代过程中,经常会出现程序漏洞bug,所以需要对bug进行清除。在现有技术中,常通过第三方工具对bug的异常调用栈信息和基本的运行数据进行收集,然后,依据收集的异常调用栈信息和基本的运行数据实现对bug发生位置进行定位。但是,部分bug的调用栈信息和基本的运行数据特别少,有的甚至没有异常调用栈信息和基本的运行数据,这就导致仅仅依据异常调用栈信息和基本的运行数据无法实现对bug进行定位。



技术实现要素:

本发明的主要目的在于提出一种程序漏洞的定位方法、装置、计算机设备及可读存储介质,其克服了现有技术中因异常调用栈信息和基本的运行数据的量少而导致无法对程序漏洞进行定位的问题。

根据本发明的一个方面,本发明包括一种程序漏洞的定位方法,所述方法包括:对目标应用的运行状况进行监测;在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

可选的,所述对目标应用的运行状况进行监测,包括:对所述目标应用中运行进程的执行状况进行监测。

可选的,所述在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据之后,所述方法还包括:获取与预置服务器适配的数据格式;依据所述数据格式将所述界面数据进行封装;将封装后的界面数据上传至所述预置服务器,以供对所述程序漏洞进行定位时使用。

可选的,在所述获取与所述预置服务器适配的数据格式之前,所述方法还包括:依据所述预置服务器的要求,将所述界面数据备份为文本格式。

可选的,所述对目标应用的运行状况进行监测,包括:在安卓系统中,通过注册异常监听器ExceptionHandler对目标应用进行监测,并在界面组件activity的生命周期内对activity的显示内容进行监测。

根据本发明的第二个方面,本发明包括一种程序漏洞的定位装置,所述装置包括:监测模块,用于对目标应用的运行状况进行监测;获取模块,用于在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;定位模块,用于在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

可选的,所述监测模块具体用于:对所述目标应用中运行进程的执行状况进行监测。

可选的,所述装置还包括:数据格式获取模块,用于在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据之后,获取与预置服务器适配的数据格式;封装模块,用于依据所述数据格式将所述界面数据进行封装;上传模块,用于将封装后的界面数据上传至所述预置服务器,以供对所述程序漏洞进行定位时使用。

可选的,所述装置还包括:备份模块,用于在所述获取与所述预置服务器适配的数据格式之前,依据所述预置服务器的要求,将所述界面数据备份为文本格式。

可选的,所述监测模块还具体用于:在安卓系统中,通过注册异常监听器ExceptionHandler对目标应用进行监测,并在界面组件activity的生命周期内对activity的显示内容进行监测。

根据本发明的第三个方面,本发明包括一种计算机设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种程序漏洞的定位方法。

根据本发明的第四个方面,本发明包括一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种程序漏洞的定位方法。

本发明有益效果如下:通过本发明提供的一种程序漏洞的定位方法、装置、计算机设备及可读存储介质,依据获取的目标应用崩溃时用户界面上的界面数据,结合造成崩溃的程序漏洞的异常调用栈信息和基本的运行数据,可以对该程序漏洞进行定位,而且,无需对该界面数据进行解析,可有效的减少对日志的分析,提高程序漏洞的定位门槛,当然,也就提高了消除程序漏洞的成功率。

附图说明

图1为本发明第一实施例一种程序漏洞的定位方法的流程框图;

图2为本发明第二实施例一种程序漏洞的定位方法的流程框图;

图3为本发明第三实施例一种程序漏洞的定位方法的流程框图;

图4为本发明第四实施例一种程序漏洞的定位方法的流程框图;

图5为程序应用中HomeActivity的TAB_MESSAGE出现程序漏洞时的运行数据查询页面示意图;

图6为程序应用中HomeActivity的TAB_MESSAGE出现程序漏洞时的程序漏洞的查询页面示意图;

图7为本发明第五实施例一种程序漏洞的定位装置的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

在对程序漏洞进行定位时,通常的是通过第三方工具对程序漏洞的异常调用栈信息和基本的运行数据进行收集,以便依据收集到的该程序漏洞的异常调用栈信息和基本的运行数据实现对该程序漏洞的发生位置进行定位。但是,如果收集到的该程序漏洞的异常调用栈信息和基本的运行数据不足,甚至根本没有收集到该程序漏洞的异常调用栈信息和基本的运行数据,这就导致仅仅依据第三方工具获取的该程序漏洞的异常调用栈信息和基本的运行数据无法实现对程序漏洞进行定位。

对此,本发明第一实施例提供一种程序漏洞的定位方法,所述方法包括:对目标应用的运行状况进行监测;在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

通过获取目标应用崩溃时用户界面上的界面数据,结合导致该目标应用崩溃的异常调用栈信息和基本的运行数据的基础,可以对造成目标应用发生崩溃的程序漏洞进行定位,而且,无需对该界面数据进行解析,可有效的减少对日志的分析,提高程序漏洞的定位门槛,当然,也就提高了消除程序漏洞的成功率。

图1为本发明第一实施例一种程序漏洞的定位方法的流程框图。根据图1所示,本发明第一实施例提供的一种程序漏洞的定位方法,包括:

S1:对目标应用的运行状况进行监测;

即:对目标应用是否发生崩溃进行监测。具体的,对目标应用的启动和退出事件、目标应用的锁屏和目标应用解锁屏幕、目标应用进入后台和切回前台、应用崩溃和应用报错中的一种或多种的运行状况进行监测。

可选的,所述对目标应用的运行状况进行监测,包括:在安卓系统中,通过注册异常监听器ExceptionHandler对目标应用进行监测,并在界面组件activity的生命周期内对activity的显示内容进行监测。

其中,该监测动作可以通过监听器完成,该监听器可以为异常监听器ExceptionHandler,也可为对目标应用的运行状况进行监测的普通程序。

其中,目标应用包括移动终端的应用程序或其他智能终端的应用程序。

S2:在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;

其中,目标应用发生崩溃的表现形式为目标应用停止运行或目标应用的运行出现卡顿。而且,在对目标应用的运行状况进行监测后,若该目标应用的运行状况正常,则该目标应用可以正常的实现其各种功能。但是,在监测到目标应用发生崩溃时,获取所述目标应用崩溃时用户界面上的界面数据,即获取程序漏洞发生时用户界面上展示的运行该目标应用的界面数据,该界面数据为程序漏洞发生时用户界面上展示的所有数据,其中,该所有数据包含有:崩溃时目标应用运行的所有代码数据,故通过该界面数据可便于锁定程序漏洞所属代码数据的位置,以实现对程序漏洞进行分析。

因为目标应用运行时,该目标应用的界面数据会同步记录该目标应用在运行时所有的数据,即:在该目标应用在发生崩溃时,其崩溃时的程序漏洞也会被记录在崩溃时的界面数据中。

在本实施例中,并不对在目标应用发生崩溃时如何及时的获取用户界面上的界面数据的方式进行限定,如:在目标应用发生崩溃时通过系统自带的信号机制,触发获取进程实现对用户界面上的界面数据进行获取。

为便于理解本实施例所记载的技术方案,以安卓系统为例,通过注册异常监听器ExceptionHandler对目标应用进行监测,并在界面组件activity的生命周期内对activity的显示内容进行监测。在监测到目标应用发生崩溃时,获取activity上的实现类和当前展示的视图信息,该activity上的实现类和当前展示的视图信息包括目标应用发生崩溃时目标应用在用户界面上的界面数据,即该界面数据为程序漏洞所处页面上的所有数据,当然,该界面数据为目标应用发生崩溃时的执行日志。

S3:在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

其中,异常调用栈信息为该程序漏洞的函数参数、调用返回地址、上层栈帧指针和函数内部使用的自动变量。基本的运行数据为该程序漏洞的代码数据。而该界面数据为程序漏洞发生时用户界面上展示的所有数据,该所有数据包含有:崩溃时目标应用运行的所有代码数据,当然,该所有代码数据包括程序漏洞的代码数据,故通过该界面数据可便于锁定程序漏洞所属代码的位置,以实现对程序漏洞进行分析。

就此,在收集到的异常调用栈信息和基本的运行数据的基础上,通过获取目标应用崩溃时用户界面上的界面数据,不仅可以结合该获取的界面数据对造成目标应用发生崩溃的程序漏洞进行定位,而且,无需对该界面数据进行解析,可有效的减少对日志的分析,降低了程序漏洞的定位门槛,当然,也就提高了消除程序漏洞的成功率。

图2为本发明第二实施例一种程序漏洞的定位方法的流程框图。根据图2所示,本发明第二实施例提供的一种程序漏洞的定位方法,包括:

S1:对目标应用的运行状况进行监测;

S2:在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;

S3:在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

可选的,步骤S1的另一种实现方式包括:

S11:对所述目标应用中运行进程的执行状况进行监测。

具体的,对目标应用当前的运行进程的执行状况进行监测。如果目标应用当前执行的运行进程出现程序漏洞时,则会导致目标应用在执行该运行进程时发生崩溃而无法完成相应的功能。如果当前运行的运行进程未出现程序漏洞时,则目标应用正常运行该运行进程以完成相应的功能。就此,通过对目标应用当前的运行进程进行监测即可实现对目标应用的运行状况进行监测。其中,可以通过监听器对目标应用当前运行的各个运行进程进行监测。

图3为本发明第三实施例一种程序漏洞的定位方法的流程框图。根据图3所示,本发明第三实施例提供的一种程序漏洞的定位方法,包括:

S1:对目标应用的运行状况进行监测;

S2:在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;

S3:在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

可选的,步骤S1的另一种实现方式包括:

S11:对所述目标应用中运行进程的执行状况进行监测。

可选的,在步骤S3之后,本实施例还包括以下步骤:

S4:获取与预置服务器适配的数据格式;依据所述数据格式将所述界面数据进行封装;将封装后的界面数据上传至所述预置服务器,以供对所述程序漏洞进行定位时使用。

在获得目标应用崩溃时用户界面上的界面数据后,需要将该界面数据上传至预置服务器,以便通过查询该界面数据实现对程序漏洞的查询定位。

可选的,将所述界面数据备份为文本格式。具体的,通过备份文件系统dump将界面数据备份为文本格式。其中,dump可将目录或整个文件系统备份至指定的设备,或备份成一个大文件,具体的,dump用于在特定时刻,将整个储存装置或储存装置之某部分的内容记录在另一储存装置中。存储的目的通常是为了防止发生错误;或者,用于将具备可读格式的数据从主要或辅助储存体复制至外部媒体,如磁带、磁盘或打印机等媒体;或者,用于为收集错误信息而复制整个虚拟储存体或虚拟储存体之某部分的内容。

具体的,需要先获取与该预置服务器适配的数据格式,在获得与该预置服务器适配的数据格式后,再将该界面数据封装为该数据格式,接着,即可将该封装为数据格式的界面数据上传至预置服务器以供查询。

可选的,在所述获取与所述预置服务器适配的数据格式之前,所述方法还包括:依据所述预置服务器的要求,将所述界面数据备份为文本格式。

就此,在收集到的异常调用栈信息和基本的运行数据的基础上,通过获取目标应用崩溃时用户界面上的界面数据,不仅可以结合该获取的界面数据对造成目标应用发生崩溃的程序漏洞进行定位,而且,无需对该界面数据进行解析,可有效的减少对日志的分析,降低了程序漏洞的定位门槛,当然,也就提高了消除程序漏洞的成功率。

为了更好说明本实施例所述方法的实施过程,下面结合本发明第四实施例对本实施例所述方法进行说明。

图4为本发明第四实施例一种程序漏洞的定位方法的流程示意图。根据图4所示,本发明第四实施例提供的一种程序漏洞的定位方法包括:

S20:初始化配置;

具体的,需要对设置参数进行配置,即:通过已经注册的异常监听器ExceptionHandler对目标应用的运行状况进行监测。并在界面组件activity的生命周期内对activity的显示内容进行监测。从而实现在目标应用发生崩溃时获取到目标应用的崩溃信息。

S21:程序运行;

在对目标应用进行监测后,正常的运行该目标应用,如:通过用户自由操作该目标应用,也可为该目标应用响应系统发布的操作指令进行相应的操作。

S22:程序崩溃;

在目标应用发生程序崩溃时,该目标应用停止运行。

S23:收集当前页面信息;

在异常监听器ExceptionHandler监测到目标应用崩溃时,获取目标应用崩溃时activity的显示内容上的界面数据,该显示内容包括页面上的实现类和当前展示的视图信息。

S24:组织信息为约定JSON格式;

通过备份文件系统dump将界面数据备份为文本格式。此外,为保证后期对所查询的界面数据的可读性或在获取的界面数据较多的情况下,通过JavaScript将获取的界面数据或该文本格式的界面数据封装为约定JSON(JavaScript ObjectNotation,JS对象标记)格式,借此,可以提高界面数据后期的可读性以及适应相应的显示协议。

S25:上传至预置服务器;

在本实施例中,预置服务器可选为服务库bugly,即:将封装后的界面数据上传至服务库bugly。在上传之后,通过bugly后台便可查看对应的界面数据。

S26:访问web页面查询上传的运行数据。

在需要查询程序漏洞时,只需通过登录web页面,便可通过查询已上传的对应的界面数据以对程序漏洞进行定位查询。

在程序应用中HomeActivity的TAB_MESSAGE出现程序漏洞时,图5为预置服务器中的运行数据的查询页面示意图,在查询上传的运行数据时,查询结果如图5所示。因为图6为程序漏洞的查询页面示意图,所以根据图6所示,可以得知该程序漏洞发生的位置是HomeActivity的TAB_MESSAGE。

图7为本发明第五实施例一种程序漏洞的定位装置的结构示意图。根据图7所示,本发明第五实施例提供的一种程序漏洞的定位装置,包括:所述装置包括:

监测模块110,用于对目标应用的运行状况进行监测;

获取模块111,用于在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据;所述界面数据为所述目标应用发生崩溃时的执行日志;

定位模块112,用于在收集到的异常调用栈信息和基本的运行数据的基础上,结合所述界面数据对造成所述目标应用发生崩溃的程序漏洞进行定位。

可选的,所述监测模块具体用于:对所述目标应用中运行进程的执行状况进行监测。

可选的,所述装置还包括:数据格式获取模块,用于在监测到所述目标应用发生崩溃时,获取所述目标应用的用户界面上的界面数据之后,获取与预置服务器适配的数据格式;封装模块,用于依据所述数据格式将所述界面数据进行封装;上传模块,用于将封装后的界面数据上传至所述预置服务器,以供对所述程序漏洞进行定位时使用。

可选的,所述装置还包括:备份模块,用于在所述获取与所述预置服务器适配的数据格式之前,依据所述预置服务器的要求,将所述界面数据备份为文本格式。

可选的,所述监测模块还具体用于:在安卓系统中,通过注册异常监听器ExceptionHandler对目标应用进行监测,并在界面组件activity的生命周期内对activity的显示内容进行监测。

本发明第六实施例提供了一种计算机设备,包括处理器和存储器;

所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种程序漏洞的定位方法。

由于在第一至四实施例中已经对一种程序漏洞的定位方法进行了详细说明,所以在本实施例中不对该方法的实施过程进行重复阐述。

本发明第七实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种程序漏洞的定位方法。

由于在第一至四实施例中已经对一种程序漏洞的定位方法进行了详细说明,所以在本实施例中不对该方法的实施过程进行重复阐述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1