【技术实现步骤摘要】
本专利技术属于反编译
,具体涉及一种基于子图语义同构的指令习语识别方法。
技术介绍
随着科技进步,目前大部分软件使用高级语言编写以机器码形式提供给用户,而机器码可读性差,人们需要将机器码程序翻译成易于理解的高级语言程序,达到对显卡有软件分析、理解和维护的目的。反编译技术又称为逆向编译技术,是指将可执行文件变成高级语言源程序的过程,反编译作为一种软件分析和理解的工具目前已经被广泛运用到程序理解、程序调试、源代码恢复等各个方面。反编译的过程通常包括:目标语言代码→反汇编→语言和编译器版本识别→库函数或类库识别→预处理→中间语言→数据流分析、控制流分析→翻译器→高级语言。目前,主流反编译软件包括Hex-Rays,RetargetableDecompiler,SecondWrite等,它们的基本技术是在汇编指令序列流中搜索相应的子序列,这种方法受到编译优化阶段的代码调度,代码优化等因素的影响,并不能够完全检测出程序中的指令习语。而基于子图语义同构的指令习语检测方法可以有效的检测出程序中因指令调度而被隐藏的指令习语,进而有效提高代码的抽象程度。
技术实现思路
本专利技术的目的是提供一种基于子图语义同构的指令习语识别方法,检测出程序中因指令调度而被隐藏的指令习语,提高代码的抽象程度。本专利技术所采用的技术方案是,一种基于子图语义同构的指令习语识别方法,包括以下步骤:步骤1:根据汇编程序控制流图的构建算法,构
【技术保护点】
一种基于子图语义同构的指令习语识别方法,其特征在于,包括以下步骤:步骤1:根据汇编程序控制流图的构建算法,构建过程体的汇编指令控制流图;步骤2:在步骤1所得的汇编指令控制流图上进行指令习语的分析,通过频繁序列挖掘算法分析出不同的指令习语所对应的指令序列流,将所有的指令习语和指令序列流构成数据依赖图;步骤3:将步骤2所得的数据依赖图键值对存储在数据库中,构建指令习语数据库;步骤4:遍历汇编指令控制流图中的每一个基本块,构造基本块的数据依赖图,将所得数据依赖图中的每一个连通子图分别与步骤3中所得指令习语数据库中的指令习语对应的数据依赖图进行子图语义同构匹配,并在基本块的数据依赖图中标记出被匹配的汇编指令控制流子图以及对应的指令习语;步骤5:根据数据流分析算法,分析出步骤4中被匹配的汇编指令控制流子图入口处和出口处的活跃变量,将活跃变量分别作为该汇编控制流子图所代表的抽象操作的参数和返回值;步骤6:将步骤5中被标记出来的汇编指令控制流子图进行消减,删除匹配到的节点,重构数据依赖图中的边集,即可实现指令习语的识别。
【技术特征摘要】
1.一种基于子图语义同构的指令习语识别方法,其特征在于,包括以下步骤:
步骤1:根据汇编程序控制流图的构建算法,构建过程体的汇编指令控制流图;
步骤2:在步骤1所得的汇编指令控制流图上进行指令习语的分析,通过频繁序列挖掘
算法分析出不同的指令习语所对应的指令序列流,将所有的指令习语和指令序列流构成数
据依赖图;
步骤3:将步骤2所得的数据依赖图键值对存储在数据库中,构建指令习语数据库;
步骤4:遍历汇编指令控制流图中的每一个基本块,构造基本块的数据依赖图,将所得
数据依赖图中的每一个连通子图分别与步骤3中所得指令习语数据库中的指令习语对应的
数据依赖图进行子图语义同构匹配,并在基本块的数据依赖图中标记出被匹配的汇编指令
控制流子图以及对应的指令习语;
步骤5:根据数据流分析算法,分析出步骤4中被匹配的汇编指令控制流子图入口处和
出口处的活跃变量,将活跃变量分别作为该汇编控制流子图所代表的抽象操作的参数和返
回值;
步骤6:将步骤5中被标记出来的汇编指令控制流子图进行消减,删除匹配到的节点,重
构数据依赖图中的边集,即可实现指令习语的识别。
2.根据权利要求1所述的一种基于子图语义同构的指令习语识别方法,其特征在于,所
述步骤2中利用频繁序列挖掘指令习语所对应的指令序列流的方法具体按照以下步骤实
施:
a)选择包含待挖掘指令习语的源程序,用不同的编译器的不同的优化级别编译源程
序,得到二进制程序集合;
b)利用反汇编工具反汇编二进制程序集合,得到汇编程序集合;
c)利用汇编程序控制流图构建算法,构建汇编程序的控制流图;针对基于控制流图的
汇编程序,以基本块为汇编程序为用户编号,以基本块为事务编号以及以指令为事务类型;
将b)到c)所建立的数据库作为频繁序列算法的输入,找出任一指令习语所对应的指令序列
流。
3.根据权利要求1或2所述的一种基于子图语义同构的指令习语识别方法,其特征在
于,所述的汇编程序控制流图构建算法具体按照以下步骤实施:
a)构建空的未访问地址链表,并用函数入口地址初始化未访问地址链表;
b)取未访问地址链表的首元素,如果该地址处的指令已经包含在汇编指令控制流图中
的某个基本块中,则需要分裂包含该地址的基本块并重新构建基本块之间的跳转关系;否
则,从该地址开始的内存中连续取指令,直到遇到跳转指令或程序结尾为止;以取到的指令
集合为内容实例化当...
【专利技术属性】
技术研发人员:李浩,高寅生,李向军,李立,崔啸华,
申请(专利权)人:西安文理学院,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。