用于检测待检测应用的漏洞的方法及装置与流程

文档序号:12596955阅读:146来源:国知局
用于检测待检测应用的漏洞的方法及装置与流程

本申请涉及漏洞检测技术领域,尤其涉及一种用于检测待检测应用的漏洞的方法及装置。



背景技术:

检测应用(APP)漏洞的目的是发现应用可能存在的漏洞,以对检测出的漏洞进行修补等处理,从而保证应用的正常运行。

与本申请较相近的已有技术是通过后向追踪分析方法来检测应用的漏洞。该方法通过对具有漏洞特征信息的语句所相关的寄存器进行追溯,以获得寄存器的值,并对寄存器的值进行分析来检测漏洞。

该后向追踪分析方法只能在所述具有漏洞特征信息的语句所在的函数内追溯寄存器,以获得所追溯的寄存器的值。也就是只能在一个函数内追溯寄存器并获取寄存器的值。但具有漏洞特征信息的语句所在的函数内有可能不存在为所追溯的寄存器赋值的语句,或为所追溯的寄存器赋的值为静态无法获取的值,或使用函数为所追溯的寄存器赋值等情况,在上述情况下该后向追踪分析方法所获得的寄存器的值均不能获得正确的寄存器的值,那么基于该获得的寄存器的值进行应用漏洞检测的结果也同样不够准确。



技术实现要素:

本申请解决的技术问题之一是提供一种用于检测待检测应用的漏洞的方法及装置,能够提高检测应用存在的漏洞的准确性。

根据本申请一方面的一个实施例,提供了一种用于检测待检测应用的漏洞的方法,包括:

识别待检测应用中的语句的漏洞特征信息;

确定所述漏洞特征信息所对应的寄存器;

追溯所述寄存器,以获得所述寄存器的值,其中在追溯所述寄存器的过程中若存在使用指定跳转语句为所述寄存器赋值,则参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯;

基于所述寄存器的值判断所述语句是否存在漏洞。

根据本申请另一方面的一个实施例,提供了一种用于检测待检测应用的漏洞的装置,包括:

识别单元,用于识别待检测应用中的语句的漏洞特征信息;

确定单元,用于确定所述漏洞特征信息所对应的寄存器;

追溯单元,用于追溯所述寄存器,以获得所述寄存器的值,其中在追溯所述寄存器的过程中若存在使用指定跳转语句为所述寄存器赋值,则参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯;

漏洞判断单元,用于基于所述寄存器的值判断所述语句是否存在漏洞。

现有技术之所以进行应用漏洞检测的准确性不高是因为,它往往只能在一个函数内追溯寄存器并获取寄存器的值,并基于该寄存器的值判断语句的漏洞,因为在一个函数内追溯寄存器是比较容易的,而在函数之间尤其是跳转函数为寄存器赋值时,追溯起来涉及不同函数之间的跳转,比较复杂。本申请实施例巧妙地利用了存储有指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,在追溯所述寄存器的过程中,对于使用指定跳转语句为所述寄存器赋值的情况(多半是函数间赋值的情况),可以参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定出需跳转追溯的寄存器继续追溯,从而可追溯到源寄存器,获得准确的寄存器的值,从而克服了现有技术只能在一个函数内追溯寄存器造成检测漏洞不准确的问题。因此本申请实施例有效提高了应用漏洞检测的准确性。

本领域普通技术人员将了解,虽然下面的详细说明将参考图示实施 例、附图进行,但本申请并不仅限于这些实施例。而是,本申请的范围是广泛的,且意在仅通过后附的权利要求限定本申请的范围。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是根据本申请一个实施例的用于检测待检测应用的漏洞的方法的流程图。

图2是根据本申请一个实施例的追溯寄存器获得寄存器的值的方法的流程图。

图3是根据本申请一个实施例的用于检测待检测应用的漏洞的装置的结构示意图。

图4是根据本申请又一个实施例的用于检测待检测应用的漏洞的装置的结构示意图。

本领域普通技术人员将了解,虽然下面的详细说明将参考图示实施例、附图进行,但本申请并不仅限于这些实施例。而是,本申请的范围是广泛的,且意在仅通过后附的权利要求限定本申请的范围。

具体实施方式

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分 布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。

后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性 实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

其中,本申请实施例为克服已有技术的只能在一个函数内追溯寄存器,无法获取正确的寄存器的值的问题,在追溯寄存器过程中若遇到由指定的跳转语句为寄存器赋值的情况,则参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯,从而可以追溯到源寄存器,获取正确的寄存器的值,基于该寄存器的值进行漏洞的分析判断可以更准确地检测出漏洞。

下面结合附图对本申请的技术方案作进一步详细描述。

图1是根据本申请一个实施例的一种用于检测待检测应用的漏洞的方法的流程图,该方法可用于检测智能移动终端中的各类应用中是否存在漏洞。该方法主要包括如下步骤:

S10、识别待检测应用中的语句的漏洞特征信息;

S11、确定所述漏洞特征信息所对应的寄存器;

S12、追溯所述寄存器,以获得所述寄存器的值,其中在追溯所述寄存器的过程中若存在使用指定跳转语句为所述寄存器赋值,则参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯;

S13、基于所述寄存器的值判断所述语句是否存在漏洞。

下面对上述各步骤做进一步详细介绍。

在步骤S10中,识别待检测应用中的语句的漏洞特征信息。

检测待检测应用的漏洞的前提是,首先要将待检测应用反编译成一种 中间语言,例如,可以反编译成smali语言,之后基于反编译后的中间语言对该待检测应用进行漏洞检测。这里所述的待检测应用中的语句为将待检测应用反编译后的中间语言中的任一条语句。可以将待检测应用反编译后的中间语言中的每一条语句逐一应用到本申请实施例的方法中,以找出含有漏洞的所有语句。

漏洞特征信息是语句中的、有可能对应着漏洞的特征。它是从大量已知存在着漏洞的语句的样本中例如通过机器学习等方法总结出来的,所以它在语句中出现,就很大可能伴随着漏洞的存在。但是否一定会有漏洞,要经过本申请实施例步骤S10~S13的判断。

其中,本申请实施例可通过漏洞特征信息表存储漏洞特征信息、与所述漏洞特征信息对应的寄存器。因此,步骤S10中识别待检测应用中的语句的漏洞特征信息的方式可以为:将待检测应用中的语句与漏洞特征信息表中的漏洞特征信息比对,若所述语句中存在与漏洞特征信息表中的漏洞特征信息匹配的漏洞特征信息,则即识别出待检测应用中的语句的漏洞特征信息。若所述语句中不存在匹配的漏洞特征信息,则继续检测该待检测应用中的下一条语句(精确地说,是待检测应用反编译后的中间语言中的下一条语句,下文中为了简单起见,一律将“应用反编译后的中间语言中的语句”简称为“应用中的语句”),直到该待检测应用的最后一条语句。

需要说明的是,所述漏洞特征信息表中还可存储与漏洞特征信息对应的漏洞标识,以及与漏洞特征信息对应的漏洞判断条件。

步骤S11的一种实现方式可以为:通过上述漏洞特征信息表查找到待检测应用的语句的漏洞特征信息后,进一步通过该漏洞特征信息表可以获取与该漏洞特征信息对应的寄存器。

步骤S12中,追溯步骤S11中确定的寄存器,以获得所述寄存器的值。

由于待检测应用的语句中包含漏洞特征信息并不能确定该语句一定存在漏洞,若要进一步确定该包含漏洞特征信息的语句是否存在漏洞,本申请实施例通过追溯寄存器获得寄存器的值来实现进一步确定该语句 是否存在漏洞。其中需要追溯的寄存器已经通过步骤S11确定,追溯寄存器时以该语句为起点,向待检测应用中该语句的前面追溯为步骤S11中确定的寄存器赋值的语句。

具体的追溯寄存器以获得所述寄存器的值的步骤可如图2中所示,进一步包括如下子步骤:

子步骤20、判断是否使用指定跳转语句为所述寄存器赋值。

本申请实施例将为赋值的语句分为两种情况,一种为使用指定跳转语句为寄存器赋值,另一种为不使用指定跳转语句为寄存器赋值。其中,不使用指定跳转语句为寄存器赋值包括以下任一种情况:

1)为寄存器赋的值为常量;

2)为寄存器赋的值为特定的静态无法获取的值;

所述特定的静态无法获取的值包括但不限于:使用除指定跳转语句外的无法解析的系统函数为寄存器赋值或赋值为类的成员变量等。

3)为寄存器赋的值为可解析函数。

也就是通过调用并解析该可解析函数即可获得寄存器的值。

也就是,在追溯到为寄存器赋值的语句后,有可能发现是指定跳转语句为寄存器赋值,也有可能是其它语句为寄存器赋值。其它语句为寄存器赋值的情况包括但不限于上述三种。如果是其它语句为寄存器赋值的情况,可以采用现有技术的方式,获取所述寄存器所被赋的值作为所述寄存器的值,例如直接获取为寄存器赋的常量的值,或直接获取所述特定的静态无法获取的值,或调用并解析所述可解析函数,将解析结果作为获得的寄存器的值。而对于使用指定跳转语句为寄存器赋值的情况,可以参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯。也就是,只要遇到所述的指定跳转语句,所追溯的寄存器必定发生变化。因此所述指定跳转语句即为寄存器跳转语句,其可以包括:指定的函数调用或指定的赋值语句,所述指定的函数调用包括:指定的不可解析的系统函数,例如Ljava/lang/StringBuilder;->toString()Ljava/lang/String;所述指定的赋值语句可包括:aget、sget、vx、vy、vz等等。

若判断出不使用指定跳转语句为所述寄存器赋值,例如上述三种情况之一,则进入子步骤21;否则进入子步骤22。

子步骤21、获取所述寄存器所被赋的值作为所述寄存器的值,停止追溯。

子步骤22、参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯。

本申请实施例通过预先设置一配置文件,在配置文件中存储指定跳转语句,以及与该指定跳转语句对应的需跳转追溯的寄存器的信息。在追溯寄存器过程中发现使用指定跳转语句为所追溯的寄存器赋值时,可参考该配置文件,以确定需跳转追溯的寄存器继续追溯,即返回到子步骤20。在子步骤20再针对这个跳转追溯的寄存器继续判断是否有指定跳转语句为其赋值,反复这样的过程,直至判断出不使用指定跳转语句为寄存器赋值而在子步骤21中直接获取所述寄存器所被赋的值作为所述寄存器的值为止,才停止追溯。

通过上述方法可实现在不同的函数间跳转追溯寄存器,以获取准确的寄存器的值。

本申请实施例在参考配置文件,以确定需跳转追溯的寄存器继续追溯的情况下,可记录跳转次数。例如,让跳转次数初始为0,每依据一个跳转语句确定需跳转追溯的寄存器并继续追溯时,跳转次数加一。本申请实施例在追溯寄存器,以获得寄存器的值的过程中还可包括如下子步骤:

判断跳转次数是否达到规定阈值,若达到规定阈值,则获得寄存器所被赋的值作为寄存器的值,停止追溯。

通过设置该跳转次数的阈值可防止无限制的追溯寄存器,以影响漏洞检测的时效性。所述阈值可设置为5次、7次或其他更多或更少的次数。

也就是说,在追溯寄存器以获得寄存器的值的过程中,若满足不使用指定跳转语句为所述寄存器赋值所包括的三种情况的任一种情况,或者满足跳转次数达到规定阈值,都可停止追溯。

为进一步理解上述追溯寄存器的方法,下面以具体实例对上述方法做进一步描述。假设下面一段描述为反编译后的待检测应用的一段内容。

851 invoke-direct{v2,v3},Ljava/Lang/StringBuilder;-><init>(I)v

852

853.line 50

854.local v2,“sb”:Ljava/Lang/StringBuilder;

855 invoke-virtual{v2,v0},Ljava/Lang/StringBuilder;->append(Ljava/Lang/CharSequence;)Ljava/lang/StringBuilder;

856

857.line 52

858:try_start_0

859 invoke-virual{v2},Ljava/Lang/StringBuilder;->toString()Ljava/Lang/String;

860

861 move-result-object v3

862

863 invoke-static{v3},Ljava/Lang/Class;->forName(Ljava/Lang/String;)Ljava/Lang/Class;

其中,851~863为行号,在对待检测应用的语句进行检测过程中,发现863行存在与漏洞特征信息表中的漏洞特征信息匹配的内容如下:

Ljava/Lang/Class;->forName(Ljava/Lang/String;)Ljava/Lang/Class

通过漏洞特征信息表可同时获得与该漏洞特征信息对应的需要追溯的寄存器信息为paramcnt=″1″,即可确定需追溯的寄存器为v3寄存器。

则追溯该V3寄存器,以获得该V3寄存器的值,即从该863行语句向上查找对该V3寄存器赋值的语句,发现861行对V3寄存器赋值,赋值语句在859行。

确定859行对V3寄存器的赋值是使用跳转语句为寄存器赋值的情况。在859行的赋值语句中,使用了如下跳转语句对该V3寄存器赋值:

api=″Ljava/lang/StringBuilder;->toString()Ljava/lang/String;″

该跳转语句为配置文件中存储的指定跳转语句,则参考配置文件中与该跳转语句对应的需跳转追溯的寄存器的信息为track-pos=″0″,则可确定需跳转追溯的寄存器为V2寄存器,在确定跳转次数没有达到规定阈值情况下继续往上追溯,即追溯为V2寄存器赋值的语句。

855行为该V2寄存器赋值,且855行为该V2寄存器的赋值仍然是使用跳转语句为寄存器赋值,使用如下跳转语句为V2寄存器赋值:

Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/St ringBuilder;

上述跳转语句同样为配置文件中存储的指定跳转语句,则查找配置文件中与该跳转语句对应的需跳转追溯的寄存器信息为track-pos=″1″,可获知需跳转追溯的寄存器为V0寄存器,在确定跳转次数没有达到规定阈值情况下继续往上追溯,直到判断出不使用指定跳转语句为所述寄存器赋值或跳转 次数达到规定阈值为止停止追溯。

不论是在不使用指定跳转语句为所述寄存器赋值的情况下,还是在跳转次数达到规定阈值情况下,当前追溯到的寄存器所被赋的值即为寄存器的值。如上例中,假如追溯到V0寄存器时,发现不使用指定跳转语句为所述寄存器V0赋值,则停止追溯,获得该V0寄存器所被赋的值作为最终获得的寄存器的值。或跳转次数的规定阈值为2时,即使为该V0赋值的语句为指定跳转语句,也不再跳转追溯,而是直接获取为该V0寄存器赋的值(如上述为V0赋值的跳转语句)作为最终获得的寄存器的值。

需要说明的是,所述配置文件中还可存储所述指定跳转语句对应的漏洞标识。则在发现指定跳转语句时,通过查找配置文件可同时获取与该跳转语句对应的需跳转追溯的寄存器的信息及漏洞标识。本申请一种实施例为提高漏洞检测效率,尽快识别包含漏洞特征信息的语句是否存在漏洞,可在获取到配置文件中与指定跳转语句对应的漏洞标识后,将该标识与漏洞特征信息表中与步骤S10中识别出的漏洞特征信息对应的漏洞标识比对,若两个标识一致,则表示该指定跳转语句对应的漏洞与步骤S10中识别的漏洞特征信息对应的漏洞是同一漏洞,则可执行所述的继续追溯的操作。若不一致,则可停止追溯寄存器,并获取当前追溯的寄存器所被赋的值。也就是,步骤S12中所述的确定需跳转追溯的寄存器继续追溯的步骤,是在确定漏洞特征信息对应的漏洞标识和配置文件中与所述指定跳转语句对应的漏洞标识一致的情况下执行的。这样做的好处是进一步提高检测应用漏洞的准确性。当然本申请实施例并不局限于此。

由于步骤S10中,通过漏洞特征信息表在识别语句的漏洞特征信息的同时即获得了与该漏洞特征信息对应的漏洞判断条件,则步骤S13所述的基于所述寄存器的值判断所述语句是否存在漏洞即:判断所述寄存器的值是否满足所述漏洞判断条件,若满足所述漏洞判断条件,则确定所述语句存在漏洞。若对于同一语句需追溯的寄存器为多个,则所获得的多个寄存器的值组合后满足漏洞判断条件,则可确定所述语句存在漏洞。

可以理解的是,在一些情况下,针对同一语句若需追溯的寄存器为 多个,在确定其中一个或多个寄存器的值不满足漏洞判断条件情况下,即可确定所述漏洞特征信息不构成漏洞时,即可停止追溯其他需要追溯的寄存器。

本申请实施例的检测待检测应用的漏洞的方法,在识别出待检测应用的语句的漏洞特征信息后,不但可以追溯该漏洞特征信息对应的寄存器,而且在追溯所述寄存器的过程中,对于使用指定跳转语句为所述寄存器赋值的情况,可以参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定出需跳转追溯的寄存器继续追溯,从而可追溯到源寄存器,获得准确的寄存器的值,基于该寄存器的值进行漏洞判断会更加准确。因此本申请实施例有效提高了应用漏洞检测的准确性。

本申请实施例还提供一种与上述用于检测待检测应用的漏洞的方法对应的用于检测待检测应用的漏洞的装置,如图3中所示为所述装置结构示意图,该装置可用于检测智能移动终端的任一应用的漏洞,该装置主要包括:识别单元30、确定单元31、追溯单元32及漏洞判断单元33。

其中,识别单元30,用于识别待检测应用中的语句的漏洞特征信息。所述漏洞特征信息、与所述漏洞特征信息对应的寄存器相对应地存储在漏洞特征信息表中。识别单元30可将待检测应用中的语句与漏洞特征信息表中的漏洞特征信息比对,若所述语句中存在匹配的漏洞特征信息,则即识别出待检测应用中的语句的漏洞特征信息。若所述语句中不存在匹配的漏洞特征信息,则继续检测该待检测应用中的下一条语句,直到该待检测应用的最后一条语句。

确定单元31,用于确定所述漏洞特征信息所对应的寄存器。

所述漏洞特征信息表中还可存储与漏洞特征信息对应的漏洞标识,以及与漏洞特征信息对应的漏洞判断条件。可见,在识别单元30依据漏洞特征信息表识别语句的漏洞特征信息的同时,可同时获得与漏洞特征信息对应的寄存器、漏洞标识、漏洞判断条件等信息。则确定单元31即可确定所述漏洞特征信息所对应的寄存器。

追溯单元32,用于追溯所述寄存器,以获得所述寄存器的值,其中在追溯所述寄存器的过程中若存在使用指定跳转语句为所述寄存器赋值,则参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定需跳转追溯的寄存器继续追溯;

可选地,所述追溯单元32被配置为:

判断是否使用指定跳转语句为所述寄存器赋值;

如果不使用指定跳转语句为所述寄存器赋值,则获取所述寄存器所被赋的值作为所述寄存器的值,停止追溯

所述不使用指定跳转语句为所述寄存器赋值包括以下任一种情况:

为寄存器赋的值为常量;

为寄存器赋的值为特定的静态无法获取的值;

为寄存器赋的值为可解析函数。

如图4中所示,在所述追溯单元32确定需跳转追溯的寄存器继续追溯的情况下,所述装置还包括:

记录单元34,用于记录跳转次数;

其中,所述追溯单元32被配置为:

判断跳转次数是否达到规定阈值;

如果达到规定阈值,则获取寄存器所被赋的值作为所述寄存器的值,停止追溯。

其中,所述追溯单元32被配置为在确定需跳转追溯的寄存器继续追溯前:

确定所述漏洞特征信息表中与所述漏洞特征信息对应的漏洞标识和配置文件中与所述指定跳转语句对应的漏洞标识一致。

漏洞判断单元33,用于基于所述寄存器的值判断所述语句是否存在漏洞。该漏洞判断单元33被配置为:判断所述寄存器的值是否满足漏洞特征信息表中与所述漏洞特征信息对应的漏洞判断条件;若满足所述漏洞判断条件,则确定所述语句存在漏洞。

综上所述,本申请实施例在识别出待检测应用的语句的漏洞特征信息后,不但可以追溯该漏洞特征信息对应的寄存器,而且在追溯所述寄 存器的过程中,对于使用指定跳转语句为所述寄存器赋值的情况,可以参考存储有所述指定跳转语句及对应的需跳转追溯的寄存器的信息的配置文件,确定出需跳转追溯的寄存器继续追溯,从而可追溯到源寄存器,获得准确的寄存器的值,基于该寄存器的值进行漏洞判断会更加准确。因此本申请实施例有效提高了应用漏洞检测的准确性。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不 排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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