CN112015664A - 一种基于友好性驱动的跨层多路径传输算法 - Google Patents
一种基于友好性驱动的跨层多路径传输算法 Download PDFInfo
- Publication number
- CN112015664A CN112015664A CN202010968256.7A CN202010968256A CN112015664A CN 112015664 A CN112015664 A CN 112015664A CN 202010968256 A CN202010968256 A CN 202010968256A CN 112015664 A CN112015664 A CN 112015664A
- Authority
- CN
- China
- Prior art keywords
- path
- instruction
- program
- execution
- analysis
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于友好性驱动的跨层多路径传输算法,包括以下步骤:1)基于路径驱动的多路径分析框架建立在动态模拟调试环境fr‑VlSA之上,以二进制程序为输入,遍历程序执行路径,这里输出程序控制流图和汇编语言代码,主要包括:指令分析、指令状态记录、路径管理、执行控制和分析结果生成几个模块。该基于友好性驱动的跨层多路径传输算法,通过分析了多路径分析过程中所要解决的主要问题,从逆向分析的目标出发,提出了基于自动路径驱动的多路径分析方法,通过系统地修改PC值,触发程序执行多条执行路径,设计实现了一个基于路径驱动的多路径二进制程序分析原型系统,实际测试表明,其可以有效提高动态分析的覆盖率。
Description
技术领域
本发明涉及多路径算法技术领域,具体为一种基于友好性驱动的跨层多路径传输算法。
背景技术
商业软件或第三方软件通常以二进制可执行程序的形式发布,从软件工程或软件系统安全的角度出发,对这些二进制程序进行逆向分析非常重要,目前,针对二进制代码进行逆向分析主要有静态分析和动态分析两大类方法,两者的根本区别在于是否需要执行二进制代码,静态分析方法在不执行程序的情况下以反汇编技术为基础对程序进行分析,其优点是可以较为全面地分析程序代码,不会受到用户输入、系统进程调度等外部事件的影响,但由于静态分析很难解决间接转移等问题,因此还需要大量的人工干预,虽然有很多研究致力于解决间接指令问题,但目前仍有一些问题无法解决,另外,对于一些经过变形和混淆等反逆向分析技术处理的代码也很难处理,动态分析方法在真实的目标机器或者虚拟机上实际执行代码,利用程序运行时的数据提高分析的效率和准确性,可以有效解决间接转移问题,同时避免了反静态分析技术带来的困难,但是,动态分析由于一次只能执行程序的一个实例,无法发掘程序的所有执行路径,因此存在代码覆盖率和扩展性问题。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于友好性驱动的跨层多路径传输算法,具备友好性、多路径传输和提高动态分析的覆盖率等优点,解决了上述背景技术中所提到的问题。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种基于友好性驱动的跨层多路径传输算法,包括以下步骤:
1)基于路径驱动的多路径分析框架建立在动态模拟调试环境fr-VlSA之上,以二进制程序为输入,遍历程序执行路径,这里输出程序控制流图和汇编语言代码,主要包括:指令分析、指令状态记录、路径管理、执行控制和分析结果生成几个模块,其中模拟调试环境fr-VlSA负责二进制程序的加载,模拟程序指令的执行和程序执行状态的获取与设置,向用户提供了加载、启动、运行、暂停和设置断点等命令;
2)指令分析模块从模拟调试环境fr-VlSA中获取当前执行指令和程序执行状态,分析指令类型,根据指令类型调用路径管理模块成路径驱动信息,如果是条件控制转移指令,则调用路径管理模块对路径分析进行处理,保存或恢复程序执行状态,通知执行控制模块,调度指令在模拟调试环境中执行;
3)令状态记录模块动态维护一个已分析指令列表,列表中每一条记录对应一条指令,保存的信息包括指令地址、指令汇编代码和指令执行状态标志visited(主要针对条件转移指令)
visited=0表示条件转移指令的两条路径都未被发掘;
visited=1表示条件转移指令的一条路径未被发掘;
visited=2表示条件分支指令的两条路径都已被发掘;
4)该模块提供访问指令列表的接口,可以方便插人记录和读取记录,并为汇编程序的生成提供支持;
5)路径管理模块负责记录和维护路径驱动信息,该模块中维护一个栈结构,用来保存用于路径驱动的分支指令和状态信息,在下列情况下路径管理模块被调用。
优选的,遇到条件转移指令时,如果该指令第一次被执行,即其两条分支路径都未被执行时(visited=O),在栈结构中记录路径驱动信息。
优选的,当程序执行结束时,判断路径栈是否为空,如果栈不为空,出栈栈顶元素,将路径驱动信息提交执行控制模块,恢复相应条件转移指令的程序执行状态,触发该路径的执行。
优选的,所述栈中所保存的路径驱动信息包括以下内容:
②条件转移指令,包括指令地址和代码;
②指令执行状态,包括CPU寄存器值和程序使用的内存单元内容。
优选的,执行控制模块根据指令分析的结果和路径管理模块保存的信息调度模拟调试环境执行相应的指令,向模拟调试环境提供待执行的指令信息和程序状态信息,触发模拟仿真环境执行指令。
优选的,基于多路径分析的目标,所有指令须被执行且仅须被执行一次,但由于路径驱动的需要,有些指令可能被访问多次,为了保证所有指令仅被执行一次,对在动态执行过程中起关键作用的条件转移指令设置了访问标志visited。
优选的,visited被初始化为0,表示转移指令的两条分支路径都未被执行,在特定输人条件下,满足条件的分支已被执行,则令visited=l;若分支路径都已被执行,则令visited=2。
优选的,基于路径驱动的多路径分析算法采用深度优先搜索策略遍历程序路径,在某一输入条件下,程序在模拟调试环境下执行,这是一种自然的深度优先顺序。
优选的,当自然路径执行结束,通过修改PC值驱动执行未访问路径时,同样采用深度优先策略,为实现深度优先策略,定义了一个栈结构S来保存程序状态信息,在程序执行的每一个路径分支点,如果visited=:0,则保存程序状态信息,将状态信息人栈;如果程序执行结束,而状态栈非空,则从栈顶取出并恢复程序状态,驱动程序执行未执行的路径。
(三)有益效果
与现有技术相比,本发明提供了一种基于友好性驱动的跨层多路径传输算法,具备以下有益效果:
该基于友好性驱动的跨层多路径传输算法,通过分析了多路径分析过程中所要解决的主要问题,从逆向分析的目标出发,提出了基于自动路径驱动的多路径分析方法,通过系统地修改PC值,触发程序执行多条执行路径,设计实现了一个基于路径驱动的多路径二进制程序分析原型系统,实际测试表明,其可以有效提高动态分析的覆盖率。
附图说明
图1为本发明提出的一种基于路径驱动的多路径分析框架图;
图2为本发明提出的一种基于友好性驱动的跨层多路径传输算法的测试与分析图。
具体实施方式
下面将结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,一种基于友好性驱动的跨层多路径传输算法,其特征在于,包括以下步骤:
1)基于路径驱动的多路径分析框架建立在动态模拟调试环境fr-VlSA之上,以二进制程序为输入,遍历程序执行路径,这里输出程序控制流图和汇编语言代码,主要包括:指令分析、指令状态记录、路径管理、执行控制和分析结果生成几个模块,其中模拟调试环境fr-VlSA负责二进制程序的加载,模拟程序指令的执行和程序执行状态的获取与设置,向用户提供了加载、启动、运行、暂停和设置断点等命令;
2)指令分析模块从模拟调试环境fr-VlSA中获取当前执行指令和程序执行状态,分析指令类型,根据指令类型调用路径管理模块成路径驱动信息,如果是条件控制转移指令,则调用路径管理模块对路径分析进行处理,保存或恢复程序执行状态,通知执行控制模块,调度指令在模拟调试环境中执行;
3)令状态记录模块动态维护一个已分析指令列表,列表中每一条记录对应一条指令,保存的信息包括指令地址、指令汇编代码和指令执行状态标志visited(主要针对条件转移指令)
visited=0表示条件转移指令的两条路径都未被发掘;
visited=1表示条件转移指令的一条路径未被发掘;
visited=2表示条件分支指令的两条路径都已被发掘;
4)该模块提供访问指令列表的接口,可以方便插人记录和读取记录,并为汇编程序的生成提供支持;
5)路径管理模块负责记录和维护路径驱动信息,该模块中维护一个栈结构,用来保存用于路径驱动的分支指令和状态信息,在下列情况下路径管理模块被调用。
遇到条件转移指令时,如果该指令第一次被执行,即其两条分支路径都未被执行时(visited=O),在栈结构中记录路径驱动信息。
当程序执行结束时,判断路径栈是否为空,如果栈不为空,出栈栈顶元素,将路径驱动信息提交执行控制模块,恢复相应条件转移指令的程序执行状态,触发该路径的执行。
所述栈中所保存的路径驱动信息包括以下内容:
①条件转移指令,包括指令地址和代码;
②指令执行状态,包括CPU寄存器值和程序使用的内存单元内容。
执行控制模块根据指令分析的结果和路径管理模块保存的信息调度模拟调试环境执行相应的指令,向模拟调试环境提供待执行的指令信息和程序状态信息,触发模拟仿真环境执行指令。
基于多路径分析的目标,所有指令须被执行且仅须被执行一次,但由于路径驱动的需要,有些指令可能被访问多次,为了保证所有指令仅被执行一次,对在动态执行过程中起关键作用的条件转移指令设置了访问标志visited。
visited被初始化为0,表示转移指令的两条分支路径都未被执行,在特定输人条件下,满足条件的分支已被执行,则令visited=l;若分支路径都已被执行,则令visited=2。
基于路径驱动的多路径分析算法采用深度优先搜索策略遍历程序路径,在某一输入条件下,程序在模拟调试环境下执行,这是一种自然的深度优先顺序。
当自然路径执行结束,通过修改PC值驱动执行未访问路径时,同样采用深度优先策略,为实现深度优先策略,定义了一个栈结构S来保存程序状态信息,在程序执行的每一个路径分支点,如果visited=:0,则保存程序状态信息,将状态信息人栈;如果程序执行结束,而状态栈非空,则从栈顶取出并恢复程序状态,驱动程序执行未执行的路径。
算法1:
Input:二进制代码P,输入集I
Load(p);
PC=Start(P,I);
s—NULL;//S为栈结构,保存分支指令和程序状态
While(true)
{
While(i=GetInsreuction(PC)是结束指令)
{
If(i!是结束指令)
{
If(i是条件分支指令)
{
If(i的两条分支都未被执行)
j
Push(PC和程序执行状态);
标记将被执行分支;
}
If(i的两条分支都已被执行)
Break;
)
执行指令i;
PC=next(PC);
}
If(S!=NULL)
t
PC—POP(S);
修改PC值;
恢复程序执行状态;
}
Elsebreak;
)
该基于友好性驱动的跨层多路径传输算法的测试与分析:
为了测试本文所提算法的有效性和实用性,实现了基于路径驱动的多路径二进制程序分析原型系统D-CFG,建立了测试环境,硬件环境为Dell计算机系统,CPU:IntelPentium DualE2200 2.19GHz;内存:2GB,硬盘:160GB;OS系统为Windows XP SP3,D-CFG由C++语言实现。
为了说明算法的效果,以生成的控制流图作为比较的对象,测试和比较的内容包括生成控制流图中的基本块数和边数,测试结果与采用传统的动态执行方法(不包含路径驱动)的结果以及IDAPro的执行结果进行对比,IDAPro是目前逆向分析领域较为成熟和流行的反汇编器,它支持不同类型处理器和不同格式的可执行文件,采用递归遍历反汇编策略对可执行文件进行反汇编处理,从而提取目标代码的控制流图,并且它还提供了可扩展接口,插件(plug-in)机制可以提供应用分析、动态调试、文件格式支持和处理器支持的插件扩展功能。
选取SPEC2000的CINT2000程序集中的几个典型程序,将编译后的二进制程序代码作为测试集,令表示D-CFG识别的基本块,bD_OLD表示传统动态执行识别的基本块,表示D-CFG识别的基本块对传统动态执行识别基本块的包含度,bIDA表示IDA识别的基本块,表示D-CFG识别的基本块对IDA识别基本块的包含度,eD-CFG表示D-CFG识别的边数,eD-OLD表示传统动态执行识别的边数,表示D-CFG识别的边对传统动态执行识别边的包含度,eIDA表示IDA识别的边数,表示D-CFG识别的边对IDA识别边的包含度,图2给出的D-CFG、传统动态执行和IDA的测试结果。
从测试结果可看出,DCFG采用路径驱动的多路径方法较好地解决了动态执行的覆盖率问题,识别路径的覆盖率远远高于传统的动态分析方法,也优于目前广泛应用的IDA。
动态多路径分析方法的目标是提高分析的路径覆盖率,本发明提出的基于自动路径驱动的多路径分析算法,通过在转移分支指令处修改程序计数器PC值,驱动程序执行不同路径,可以有效提高分析路径的覆盖率。
本发明的有益效果是:通过分析了多路径分析过程中所要解决的主要问题,从逆向分析的目标出发,提出了基于自动路径驱动的多路径分析方法,通过系统地修改PC值,触发程序执行多条执行路径,设计实现了一个基于路径驱动的多路径二进制程序分析原型系统,实际测试表明,其可以有效提高动态分析的覆盖率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (9)
1.一种基于友好性驱动的跨层多路径传输算法,其特征在于,包括以下步骤:
1)基于路径驱动的多路径分析框架建立在动态模拟调试环境fr-VlSA之上,以二进制程序为输入,遍历程序执行路径,这里输出程序控制流图和汇编语言代码,主要包括:指令分析、指令状态记录、路径管理、执行控制和分析结果生成几个模块,其中模拟调试环境fr-VlSA负责二进制程序的加载,模拟程序指令的执行和程序执行状态的获取与设置,向用户提供了加载、启动、运行、暂停和设置断点等命令;
2)指令分析模块从模拟调试环境fr-VlSA中获取当前执行指令和程序执行状态,分析指令类型,根据指令类型调用路径管理模块成路径驱动信息,如果是条件控制转移指令,则调用路径管理模块对路径分析进行处理,保存或恢复程序执行状态,通知执行控制模块,调度指令在模拟调试环境中执行;
3)令状态记录模块动态维护一个已分析指令列表,列表中每一条记录对应一条指令,保存的信息包括指令地址、指令汇编代码和指令执行状态标志visited(主要针对条件转移指令)
visited=0表示条件转移指令的两条路径都未被发掘;
visited=1表示条件转移指令的一条路径未被发掘;
visited=2表示条件分支指令的两条路径都已被发掘;
4)该模块提供访问指令列表的接口,可以方便插人记录和读取记录,并为汇编程序的生成提供支持;
5)路径管理模块负责记录和维护路径驱动信息,该模块中维护一个栈结构,用来保存用于路径驱动的分支指令和状态信息,在下列情况下路径管理模块被调用。
2.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,遇到条件转移指令时,如果该指令第一次被执行,即其两条分支路径都未被执行时(visited=O),在栈结构中记录路径驱动信息。
3.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,当程序执行结束时,判断路径栈是否为空,如果栈不为空,出栈栈顶元素,将路径驱动信息提交执行控制模块,恢复相应条件转移指令的程序执行状态,触发该路径的执行。
4.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,所述栈中所保存的路径驱动信息包括以下内容:
①条件转移指令,包括指令地址和代码;
②指令执行状态,包括CPU寄存器值和程序使用的内存单元内容。
5.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,执行控制模块根据指令分析的结果和路径管理模块保存的信息调度模拟调试环境执行相应的指令,向模拟调试环境提供待执行的指令信息和程序状态信息,触发模拟仿真环境执行指令。
6.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,基于多路径分析的目标,所有指令须被执行且仅须被执行一次,但由于路径驱动的需要,有些指令可能被访问多次,为了保证所有指令仅被执行一次,对在动态执行过程中起关键作用的条件转移指令设置了访问标志visited。
7.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,visited被初始化为0,表示转移指令的两条分支路径都未被执行,在特定输人条件下,满足条件的分支已被执行,则令visited=l;若分支路径都已被执行,则令visited=2。
8.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,基于路径驱动的多路径分析算法采用深度优先搜索策略遍历程序路径,在某一输入条件下,程序在模拟调试环境下执行,这是一种自然的深度优先顺序。
9.根据权利要求1所述的一种基于友好性驱动的跨层多路径传输算法,其特征在于,当自然路径执行结束,通过修改PC值驱动执行未访问路径时,同样采用深度优先策略,为实现深度优先策略,定义了一个栈结构S来保存程序状态信息,在程序执行的每一个路径分支点,如果visited=:0,则保存程序状态信息,将状态信息人栈;如果程序执行结束,而状态栈非空,则从栈顶取出并恢复程序状态,驱动程序执行未执行的路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010968256.7A CN112015664A (zh) | 2020-09-15 | 2020-09-15 | 一种基于友好性驱动的跨层多路径传输算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010968256.7A CN112015664A (zh) | 2020-09-15 | 2020-09-15 | 一种基于友好性驱动的跨层多路径传输算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112015664A true CN112015664A (zh) | 2020-12-01 |
Family
ID=73521520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010968256.7A Pending CN112015664A (zh) | 2020-09-15 | 2020-09-15 | 一种基于友好性驱动的跨层多路径传输算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015664A (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
-
2020
- 2020-09-15 CN CN202010968256.7A patent/CN112015664A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
Non-Patent Citations (1)
Title |
---|
张平等: "基于路径驱动的多路径分析算法", 《计算机科学》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ren et al. | Hadoop's adolescence: An analysis of Hadoop usage in scientific workloads | |
US7444499B2 (en) | Method and system for trace generation using memory index hashing | |
US6694427B1 (en) | Method system and apparatus for instruction tracing with out of order processors | |
JP4294084B2 (ja) | ソフトウェアアプリケーションを実行する方法及び記録媒体 | |
US6986128B2 (en) | Multiple stage program recompiler and method | |
Shen et al. | I/O System Performance Debugging Using Model-driven Anomaly Characterization. | |
CN109522428A (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
US6347383B1 (en) | Method and system for address trace compression through loop detection and reduction | |
US20040054993A1 (en) | Hybrid mechanism for more efficient emulation and method therefor | |
Van Biesbrouck et al. | Efficient sampling startup for sampled processor simulation | |
CN112015664A (zh) | 一种基于友好性驱动的跨层多路径传输算法 | |
Cui et al. | Flowwalker: a fast and precise off-line taint analysis framework | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
US20080022155A1 (en) | Facilitating testing of file systems by minimizing resources needed for testing | |
CN113711190A (zh) | 时间旅行调试追踪中的跨线程存储器索引 | |
US20070079109A1 (en) | Simulation apparatus and simulation method | |
Gonzalez-Ferez et al. | Simultaneous evaluation of multiple I/O strategies | |
RU2595529C2 (ru) | Способ селективной загрузки набора модулей, электронное устройство и носитель данных | |
Sato et al. | UML scrapbook and realization of snapshot programming environment | |
Sisson et al. | Addressing patterns and memory handling algorithms | |
Dubey et al. | Profile-driven generation of trace samples | |
Maier et al. | Model-Based Loop Perforation | |
JP4701611B2 (ja) | 動的変換方式のエミュレータ向けメモリ管理方法 | |
US7983894B2 (en) | Data processing | |
Basheleishvili et al. | Study And Analysis Of The. Net Platform-Based Technologies For Working with the Databases |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201201 |