掌桥专利:专业的专利平台
掌桥专利
首页

软件安全性分析方法及分析装置、电子设备及存储介质

文献发布时间:2023-06-19 11:08:20


软件安全性分析方法及分析装置、电子设备及存储介质

技术领域

本申请涉及软件安全技术领域,具体涉及软件安全性分析方法及分析装置、电子设备及存储介质。

背景技术

计算机软件的普遍应用带给人们越来越多的便捷,并日益影响人们的日常生活。但计算机软件中存在大量的错误及漏洞,隐藏着巨大的风险,其中的安全漏洞,容易被不法分子利用,造成声誉和金钱的损失。

软件安全性分析一般利用静态分析与动态调试的方法对应用程序进行安全测试。

静态分析是在不执行计算机程序的条件下,对源代码进行分析,找出代码缺陷。静态分析局限性在于程序执行的不确定性,例如,传入参数不同,执行到的代码分支就不同。

动态调试是使用调试工具加载程序,观察运行过程中的状态,如寄存器内容,函数执行结果,内存使用情况等等,分析函数功能,明确代码逻辑,挖掘可能存在的安全问题。而动态调试虽然解决了静态分析的不确定性,由于一般的动态调试器(OdllyDbg)没有记录执行代码流的功能,每分析一个代码块就需要执行一次或者多次程序,实际的安全分析操作由于软件代码量庞大,没有源码的情况下,需要耗费大量的时间。

现有的软件分析提出了一种多维图谱抽取框架,基于该框架定义多维图谱描述约束,使多维图谱抽取与具体的逆向分析过程之间相互独立。给出逆向分析算法库的构造方式及算法库的调用接口,实现基于多维图谱描述的抽象图谱生成。设计基于图形描述语言DOT的抽象图谱转换接口,实现抽象图谱的快速可视化,最后给出多维图谱抽取算法,提高软件安全性分析效率。该方法使用的前提是得到待分析算法库的构造方式及算法库的调用接口,在实际的软件安全性分析环境中,我们往往无法得到待分析算法库的构造方式及算法库的调用接口,因此该技术使用受到限制,并且该技术只针对算法库,无法对任意代码段进行安全分析。

发明内容

本申请实施例提供了一种软件安全性分析方法,包括:在静态分析工具中打开目标应用软件的指令流文件,所述指令流文件通过动态调试器获取并保存;将所述指令流文件的指令的动态调试器地址转换为静态分析工具地址;标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

根据一些实施例,所述动态调试器包括Windbg动态调试器、ollydbg动态调试器的至少一种,所述静态分析工具包括IDA静态分析工具。

根据一些实施例,所述指令流文件通过动态调试器获取并保存,包括:在所述动态调试器中加载目标应用软件;打开指令流记录文件,开启指令流记录;在待分析的代码块设置断点;根据预设规则,在所述断点开始执行调试,记录执行的指令;保存记录的指令流到指令流文件。

根据一些实施例,所述在静态分析工具中打开目标应用软件的指令流文件,包括:在所述静态分析工具中导入脚本引擎;在所述脚本引擎中,打开目标应用软件的所述指令流文件。

根据一些实施例,所述将所述指令流文件的指令的动态调试器地址转换为静态分析工具地址,包括:读取所述指令流文件的指令的动态调试器地址;将所述指令的动态调试器地址转换为所述指令的静态分析工具地址。

根据一些实施例,所述将所述指令的动态调试器地址转换为所述指令的静态分析工具地址,包括:在所述脚本引擎中获取目标应用软件的动态调试器基址和静态分析工具基址;根据所述指令的动态调试器地址、所述动态调试器基址、所述静态分析工具基址获取所述指令的静态分析工具地址。

根据一些实施例,所述脚本引擎包括IDC脚本引擎、idapython脚本引擎的至少一种。

本申请实施例还提供一种软件安全性分析装置,包括动态调试器、静态分析工具,所述动态调试器用于获取并保存目标应用软件的指令流文件;所述静态分析工具包括地址转换模块、指令标识模块,所述地址转换模块用于打开所述指令流文件,将所述指令流文件的指令的动态调试器地址转换为静态分析工具地址;所述指令标识模块用于标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

根据一些实施例,所述动态调试器为Windbg动态调试器,所述静态分析工具为IDA静态分析工具,所述地址转换模块包括IDC脚本引擎、idapython脚本引擎的至少一种。

根据一些实施例,所述动态调试器包括加载单元、指令流记录单元、断点设置单元、指令追踪单元、存储单元,所述加载单元用于利用动态调试器加载目标应用软件;所述指令流记录单元用于打开指令流记录文件,开启指令流记录;所述断点设置单元用于在待分析的代码块设置断点;所述指令追踪单元用于根据预设规则,在所述断点开始执行调试,记录执行的指令流;所述存储单元用于保存记录的指令流到指令流文件。

根据一些实施例,所述地址转换模块包括基址获取单元、指令流文件打开单元、地址读取单元、地址转换单元,所述基址获取单元用于获取目标应用软件在动态调试器基址和静态分析工具基址;所述指令流文件打开单元用于打开所述指令流文件;所述地址读取单元用于读取所述指令流文件的指令的动态调试器地址;所述地址转换单元用于将所述指令的动态调试器地址转换为所述指令的静态分析工具地址。

根据一些实施例,所述地址转换单元包括地址计算单元,所述地址计算单元用于根据所述指令的动态调试器地址、所述动态调试器基址、所述静态分析工具基址获取所述指令的静态分析工具地址。

本申请实施例还提供一种电子设备,包括一个或多个处理器、存储器,所述存储器用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行如上所述的方法。

本申请实施例还提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时执行如上所述的方法。

本申请实施例提供的技术方案,将动态调试工具和静态分析工具协同工作,将静态分析的直观性和动态调试的确定性相结合,无需待分析应用程序的源码,调用接口等,在纯黑盒的环境下对应用程序进行分析,使用静态分析工具完成指令流标识,节约时间,能够同时克服动态调试耗费时间过多的缺点和静态分析的不确定性的缺点,提高软件安全性分析的效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种软件安全性分析方法流程示意图之一;

图2是本申请实施例提供的一种软件安全性分析方法流程示意图之二;

图3是本申请实施例提供的一种软件安全性分析装置功能组成框图;

图4是本申请实施例提供的一种动态调试器功能组成框图;

图5是本申请实施例提供的一种静态分析工具功能组成框图;

图6是本申请实施例提供的一种地址转换模块功能组成框图;

图7是本申请实施例提供的一种电子设备功能组成框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1是本申请实施例提供的一种软件安全性分析方法流程示意图。

如图1所示,在S110中,在静态分析工具中打开目标应用软件的指令流文件,指令流文件通过动态调试器获取并保存。

在本实施例中,指令流文件通过动态调试器获取并保存。在动态调试器中加载目标应用软件。通过执行动态调试器中的logopen+文件名的命令,打开指令流文件,开启指令流记录。在目标应用软件待分析的代码块设置断点。调试器中断在需要分析的代码块的第一条指令,然后根据预设规则,在断点开始单步执行调试目标应用软件,记录执行的指令,执行到需要分析的代码块结束位置。获取并保存指令流到指令流文件。具体而言,指令流文件可以包括指定的日志文件、bak备份文件、txt文本文件、TMP Windows临时文件的至少一种,并不以此为限。

在此需要说明的是,预设规则可以预先设定。例如在断点开始单步执行调试目标应用软件,记录每一步执行的指令,执行到需要分析的代码块结束位置。或者也可以在需要分析的指令处设置断点,只执行断点所在的指令,并不以此为限。

利用静态分析工具IDA中获取目标应用软件在动态调试器基址和静态分析工具基址。

如图1所示,在S120中,将指令流文件的指令的动态调试器地址转换为静态分析工具地址。

在本实施例中,读取指令流文件的每一条指令的动态调试器地址。根据指令的动态调试器地址、动态调试器基址、静态分析工具基址,确定该条指令的静态分析工具地址。

具体公式为:静态分析工具地址=动态调试器地址-动态调试器基址+静态分析工具基址。

如图1所示,在S130中,在静态分析工具中标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

在本实施例中,在静态分析工具的指令标识模块中标识静态分析工具地址所对应的指令流。

在本实施例中,指令标识模块为反汇编窗口,但并不以此为限。在反汇编窗口使用高亮的颜色或者不同的字体等方式来标识指令流,使指令流醒目,以便于工程师或分析软件对软件安全性进行静态分析。静态分析是在不执行计算机程序的条件下,对源代码进行分析,找出代码缺陷。

本实施例提供的技术方案,将动态调试工具和静态分析工具协同工作,将静态分析的直观性和动态调试的确定性相结合,无需待分析应用程序的源码,调用接口等,在纯黑盒的环境下对应用程序进行分析,使用静态分析工具完成指令流标识,节约时间,能够同时克服动态调试耗费时间过多的缺点和静态分析的不确定性的确定,提高软件安全性分析的效率。

图2是本申请实施例提供的一种软件安全性分析方法流程示意图。

如图2所示,在S210中,在IDA静态分析工具中打开目标应用软件的指令流文件,指令流文件通过Windbg动态调试器获取并保存。

在本实施例中,动态调试器包括Windbg动态调试器、ollydbg动态调试器的至少一种,并不以此为限。静态分析工具为IDA静态分析工具。在静态分析工具的脚本引擎中打开目标应用软件的指令流文件,脚本引擎包括IDC脚本引擎、idapython脚本引擎的至少一种,并不以此为限。

Windbg动态调试器是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg动态调试器是一个强有力的利器。

OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一个新的动态追踪工具,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是强大的调试工具。

IDA静态分析工具是敏捷和多功能的反编译工具。

在本实施例中,指令流文件通过Windbg动态调试器获取并保存。在Windbg动态调试器中加载目标应用软件。通过执行Windbg动态调试器中的logopen+文件名的命令,打开指令流记录文件,开启指令流记录。在目标应用软件待分析的代码块执行BP+地址的命令设置断点。执行G指令,调试器中断在需要分析的代码块的第一条指令,然后在断点开始执行P指令,单步执行调试目标应用软件,记录每一步执行的指令,执行到需要分析的代码块结束位置。获取并保存指令流到指令流文件。具体而言,指令流文件可以包括指定的日志文件、bak备份文件、txt文本文件、TMP Windows临时文件的至少一种,并不以此为限。

在本实施例中,在静态分析工具IDA中导入IDC脚本引擎。在IDC脚本引擎中使用AskStr函数获取目标应用软件在Windbg动态调试器基址和IDA静态分析工具基址,即Windbg基址和IAD基址。在IDC脚本引擎中,使用fopen函数打开目标应用软件的指令流文件。

如图2所示,在S220中,将指令流文件的指令的动态调试器地址转换为IDA静态分析工具地址。

在本实施例中,使用fgetc函数读取指令流文件的每一条指令的Windbg动态调试器地址,即指令Windbg地址。将指令的Windbg动态调试器地址减去Windbg动态调试器基址再加上IDA静态分析工具基址,作为该条指令的IDA静态分析工具地址。

具体公式为:指令IDA地址=指令Windbg地址-Windbg基址+IDA基址。

如图2所示,在S230中,在IDA静态分析工具的反汇编窗口中标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

在本实施例中,在IDA静态分析工具的指令标识模块中标识静态分析工具地址所对应的指令流。

在本实施例中,指令标识模块为反汇编窗口。在反汇编窗口使用SetColor函数用高亮的颜色标识指令流,以对软件安全性进行静态分析。静态分析是在不执行计算机程序的条件下,对源代码进行分析,找出代码缺陷。

本实施例提供的技术方案,将业界顶级的动态调试工具Windbg或ollydbg动态调试器,和静态分析工具IDA协同工作,将IDA静态分析的直观性和动态调试的确定性相结合,无需待分析应用程序的源码,调用接口等,在纯黑盒的环境下对应用程序进行分析,使用IDC脚本引擎或idapython脚本引擎自动化完成指令流标识,节约时间,能够同时克服动态调试耗费时间过多的缺点和静态分析的不确定性的确定,提高软件安全性分析的效率。

图3是本申请实施例提供的一种软件安全性分析装置功能组成框图。

软件安全性分析装置包括动态调试器100、静态分析工具200。其中,动态调试器100包括Windbg动态调试器100、ollydbg动态调试器的至少一种,并不以此为限。静态分析工具200包括IDA静态分析工具200。

在本实施例中,Windbg动态调试器100获取并保存目标应用软件的指令流文件。打开指令流文件,将指令流文件的指令的动态调试器100的地址转换为静态分析工具200的地址。标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

图4是本申请实施例提供的一种动态调试器功能组成框图。

动态调试器100包括加载单元110、指令流记录单元120、断点设置单元130、指令追踪单元140、存储单元150。

加载单元110利用动态调试器加载目标应用软件。指令流记录单元120打开指令流记录文件,开启指令流记录。断点设置单元130在待分析的代码块设置断点。指令追踪单元140根据预设规则,在断点开始执行调试,记录执行的指令。存储单元150保存记录的指令流到指令流文件,指令流文件可以包括指定的日志文件、bak备份文件、txt文本文件、TMPWindows临时文件的至少一种,并不以此为限。

图5是本申请实施例提供的一种静态分析工具功能组成框图。

静态分析工具200包括地址转换模块210、指令标识模块220。其中,静态分析工具200包括IDA静态分析工具200,并不以此为限。地址转换模块210包括IDC脚本引擎、idapython脚本引擎的至少一种,并不以此为限。指令标识模块220为反汇编窗口220。

在本实施例中,IDC脚本引擎210打开指令流文件,将指令流文件的指令的动态调试器100的地址转换为静态分析工具200的地址。反汇编窗口220标识静态分析工具地址所对应的指令流,以对软件安全性进行静态分析。

图6是本申请实施例提供的一种地址转换模块功能组成框图。

地址转换模块210包括基址获取单元211、指令流文件打开单元212、地址读取单元213、地址转换单元214。地址转换模块210包括IDC脚本引擎、idapython脚本引擎的至少一种,但并不以此为限。

基址获取单元211获取目标应用软件在动态调试器基址和静态分析工具基址。指令流文件打开单元212打开指令流文件。地址读取单元213读取指令流文件的指令的动态调试器地址。地址转换单元214将指令的动态调试器地址转换为指令的静态分析工具地址。

地址转换单元214包括地址计算单元。地址计算单元将指令的动态调试器地址减去动态调试器基址再加上静态分析工具基址,作为指令的静态分析工具地址。

具体公式为:指令IDA地址=指令Windbg地址-Windbg基址+IDA基址。

图7是本申请实施例提供的一种电子设备功能组成框图。

电子设备可以包括输出单元301、输入单元302、处理器303、存储器304、通讯接口305,以及内存单元306。

存储器304作为一种非暂态计算机可读存储器,可用于存储软件程序、计算机可执行程序以及模块。当一个或多个程序被一个或多个处理器303执行,使得一个或多个处理器303实现如上所述的方法。

存储器304可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。存储数据区可存储根据电子器件的使用所创建的数据等。此外,存储器304可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器304可选包括相对于处理器303远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 软件安全性分析方法及分析装置、电子设备及存储介质
  • FADEC软件安全性分析方法及装置
技术分类

06120112810500