一种利用栈相关寄存器检测软件漏洞的方法及装置制造方法及图纸

技术编号:28144514 阅读:18 留言:0更新日期:2021-04-21 19:26
本发明专利技术提供一种利用栈相关寄存器检测软件漏洞的方法及装置,所述方法包括:步骤S1,在待检测软件的执行路径中设置检测点;步骤S2,在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;步骤S3,查询系统创建所述线程时设置的栈地址空间范围;步骤S4,判断所述寄存器的值是否在所述地址空间范围内,如果判断结果为否,则所述待检测软件存在漏洞。根据本发明专利技术的方案,可以更全面地检测软件漏洞。检测软件漏洞。检测软件漏洞。

【技术实现步骤摘要】
一种利用栈相关寄存器检测软件漏洞的方法及装置


[0001]本专利技术涉及计算机信息安全领域,尤其涉及一种利用栈相关寄存器检测软件漏洞的方法及装置。

技术介绍

[0002]软件漏洞是指应用软件在逻辑设计上的缺陷或在编写时产生的错误,这个缺陷或错误可以被不法者或者电脑黑客利用,通过植入木马、病毒等方式来攻击或控制整个电脑,从而窃取用户电脑中的重要资料和信息,给用户带来损失。
[0003]现有的软件漏洞检测方法通常采用源代码扫描的方式,这种检测方法主要针对开放源代码的程序,通过检查程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针等,进而发现程序中可能隐含的安全缺陷。这种漏洞分析技术需要熟练掌握编程语言,并预先定义出不安全代码的审查规则,通过表达式匹配的方法检查源程序代码。但是由于程序运行时是动态变化的,如果不考虑函数调用的参数和调用环境,不对源代码进行词法分析和语法分析,就没有办法准确地把握程序的语义,因此这种方法对使用者的专业技术水平要求极高,且不能发现程序动态运行过程中的安全漏洞,对漏洞的检测不全面。

技术实现思路

[0004]为解决上述技术问题,本专利技术提出了一种利用栈相关寄存器检测软件漏洞的方法及装置,用以解决现有技术无法全面检测软件漏洞的技术问题。
[0005]根据本专利技术的第一方面,提供一种利用栈相关寄存器检测软件漏洞的方法,所述方法包括以下步骤:
[0006]步骤S1,在待检测软件的执行路径中设置检测点;
[0007]步骤S2,在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;
[0008]步骤S3,查询系统创建所述线程时设置的栈地址空间范围;
[0009]步骤S4,判断所述寄存器的值是否在所述地址空间范围内,如果判断结果为否,则所述待检测软件存在漏洞。进一步地,所述检测点为系统API的挂钩函数。
[0010]进一步地,在所述步骤S3中,查询到的所述栈地址空间范围包括:所述栈地址空间的最小值和最大值;
[0011]所述步骤S4中,判断所述寄存器的值是否在所述地址空间范围内,具体包括:将所述寄存器的值与所述栈地址空间的最小值和最大值比较,如果所述寄存器的值小于所述栈地址空间的最小值或者大于所述栈地址空间的最大值,则所述寄存器的值不在所述地址空间范围内。
[0012]进一步地,当所述待检测软件存在漏洞时,发出预警提示。
[0013]根据本专利技术第二方面,提供一种利用栈相关寄存器检测软件漏洞的装置,所述装置包括:
[0014]设置检测点模块,用于在待检测软件的执行路径中设置检测点;
[0015]获取模块,用于在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;
[0016]查询模块,用于查询系统创建所述线程时设置的栈地址空间范围;
[0017]判断模块,用于判断所述寄存器的值是否在所述地址空间范围内,如果判断结果为否,则所述待检测软件存在漏洞。
[0018]进一步地,所述检测点为系统API的挂钩函数。
[0019]进一步地,所述查询模块查询到的所述栈地址空间范围包括:所述栈地址空间的最小值和最大值;
[0020]所述判断模块进一步包括比较模块,用于将所述寄存器的值与所述栈地址空间的最小值和最大值进行比较,如果所述寄存器的值小于所述栈地址空间的最小值或者大于所述栈地址空间的最大值,则所述寄存器的值不在所述地址空间范围内。
[0021]进一步地,所述装置进一步包括预警模块,用于当所述待检测软件存在漏洞时,发出预警提示。
[0022]根据本专利技术第三方面,提供一种利用栈相关寄存器检测软件漏洞的系统,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如前所述的利用栈相关寄存器检测软件漏洞的方法。
[0023]根据本专利技术第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如前所述的利用栈相关寄存器检测软件漏洞的方法。
[0024]根据本专利技术的上述方案,能够获得以下技术效果:对漏洞的检测方式简单、高效,能够准确地检测软件漏洞,检测率更高且检出更加全面。
[0025]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,并可依照说明书的内容予以实施,以下以本专利技术的较佳实施例并配合附图详细说明如后。
附图说明
[0026]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术提供如下附图进行说明。在附图中:
[0027]图1为本专利技术一个实施方式的利用栈相关寄存器检测软件漏洞的方法流程图;
[0028]图2为本专利技术一个实施方式的利用栈相关寄存器检测软件漏洞的装置结构框图。
具体实施方式
[0029]为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术具体实施例及相应的附图对本专利技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0030]首先结合图1说明本专利技术一个实施方式的利用栈相关寄存器检测软件漏洞的方法流程图。如图1所示,所述方法包括以下步骤:
[0031]步骤S1,在待检测软件的执行路径中设置检测点;
[0032]在该步骤中,该检测点可以为系统API的挂钩函数。在一个优选的实施例中,在CPU架构是X86的Windows系统中,该系统API的挂钩函数可以是NTDLL!KiFastSystemCall函数。在支持快速调用的CPU上,由于系统API调用最终都会调用NTDLL!KiFastSystemCall函数进入内核,因此当软件存在漏洞需要调用系统调用时,通过挂钩NTDLL!KiFastSystemCall函数进行系统调用,就可以在该检测点,对线程的栈相关寄存器的值作检测,从而可以准确地检测到软件漏洞的存在。
[0033]此外,该检测点还可以为Windows系统中的VirtualProtect、VirutalProtectEx、LoadLibraryExA、LoadLibraryExW、GetProcAddress等函数。
[0034]步骤S2,在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;
[0035]该步骤中,如果是32位操作系统,则获取的是ESP寄存器的值;如果是64位操作系统,则获取的是RSP寄存器的值。
[0036]步骤S3,查询系统创建所述线程时设置的栈地址空间范围;
[0037]该步骤中,设置栈地址空间范围的方法包括:设置栈地址空间的最小值和最大值;
[0038]步骤S4,判断所述寄存器的值是否在所述地址空间范围内,如果判断结果为否,则所述待检测软件存在漏洞。
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种利用栈相关寄存器检测软件漏洞的方法,其特征在于,所述方法包括以下步骤:步骤S1,在待检测软件的执行路径中设置检测点;步骤S2,在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;步骤S3,查询系统创建所述线程时设置的栈地址空间范围;步骤S4,判断所述寄存器的值是否在所述地址空间范围内,如果判断结果为否,则所述待检测软件存在漏洞。2.如权利要求1所述的利用栈相关寄存器检测软件漏洞的方法,其特征在于,所述检测点为系统API的挂钩函数。3.如权利要求1或2所述的利用栈相关寄存器检测软件漏洞的方法,其特征在于,在所述步骤S3中,查询到的所述栈地址空间范围包括:所述栈地址空间的最小值和最大值;所述步骤S4中,判断所述寄存器的值是否在所述地址空间范围内,具体包括:将所述寄存器的值与所述栈地址空间的最小值和最大值比较,如果所述寄存器的值小于所述栈地址空间的最小值或者大于所述栈地址空间的最大值,则所述寄存器的值不在所述地址空间范围内。4.如权利要求3所述的利用栈相关寄存器检测软件漏洞的方法,其特征在于,当所述待检测软件存在漏洞时,发出预警提示。5.一种利用栈相关寄存器检测软件漏洞的装置,其特征在于,所述装置包括:设置检测点模块,用于在待检测软件的执行路径中设置检测点;获取模块,用于在待检测软件的线程运行到所述检测点时,获取所述线程对应的栈相关寄存器的值;查询模块,用于查询系统创建所述线程...

【专利技术属性】
技术研发人员:姚琪福
申请(专利权)人:安芯网盾北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1