一种目标代码控制流图生成系统技术方案

技术编号:15329227 阅读:165 留言:0更新日期:2017-05-16 12:57
本发明专利技术公开了一种基于符号执行的目标代码控制流图生成系统,该系统包括预处理模块、反汇编与控制流图生成模块、目标地址分析模块。其中,预处理模块用于目标代码文件的格式识别与程序入口地址的定位,反汇编与控制流图生成模块用于机器指令的翻译与控制流图的生成,目标地址分析模块用于间接跳转指令处目的地址的可能值分析计算,其采用符号执行、SMT求解器求解、自动测试用例生成、二进制仿真执行的模块。本发明专利技术的系统对间接地址跳转地址进行了分析,其生成的控制流图,相比于一般模块生成的控制流图,具有更加精确、相对完整的特点。

An object code control flow graph generation system

The invention discloses a target code control flow graph generation system based on symbolic execution, which comprises a preprocessing module, a disassembly and control flow graph generation module and a target address analysis module. The pretreatment module is used for positioning format identification and program entrance address of the target code file, disassembly and control flow graph generation module is used to generate and control the translation machine instruction flow chart, the target address analysis module is used for indirect instruction at the destination address of the emergy analysis, which uses symbolic execution, SMT solution solver, the automatic generation of test cases, binary simulation execution module. The system of the invention analyzes the address of indirect address jump, and the control flow graph generated by the invention has more accurate and relatively complete characteristics than the control flow graph generated by the general module.

【技术实现步骤摘要】
一种目标代码控制流图生成系统
本专利技术涉及一种计算机
,尤其是涉及基于符号执行的目标代码控制流图生成系统。
技术介绍
面对众多的无法获取源码的目标程序,研究人员不得不需要通过逆向工程的手段对程序的目标代码进行分析。在分析过程中,一个精确而完善的控制流图能够帮助研究人员对程序结构进行直观的认识,以辅助其进一步的深入分析与理解。通常,人们通过反汇编的手段,对目标代码进行反汇编,根据程序中的跳转与子过程调用,生成相应的控制流节点,构造出相应的控制流图。而在控制流图构造的过程中,通常会遭遇到间接地址跳转的问题。间接跳转地址是指目标地址存放在内存或寄存器中的跳转地址,这类值通常无法通过静态分析得到。而在一些控制流图生成工具的实现中,采用了抽象解释的模块,使用近似值的模块对控制流进行扩充。这种模块相对不够精确,同时引入了不该存在的控制流路径。
技术实现思路
本专利技术的目的是通过以下技术方案实现的。具体的,本专利技术公开一种目标代码控制流图生成系统,其特征在于,包括:预处理模块:用于对目标代码文件进行封装格式的识别,定位程序指令的入口地址;反汇编与控制流图生成模块:用于机器指令的反汇编与控制流图生成;目标地址分析模块:用于间接跳转指令处目的地址的可能值分析计算。优选地,所述预处理模块包括:文件类型识别模块:通过对特定封装格式文件头部数据结构的匹配,进行文件类型的识别;目标平台确定模块:读取并解析目标代码文件的头部数据,确定目标代码的目标平台;入口偏移地址定位模块:读取并解析目标代码文件的头部数据,定位目标文件指令序列的入口偏移地址。优选地,所述反汇编与控制流图生成模块包括:反汇编引擎选择模块:根据预处理模块所识别的目标平台信息,自动选择相应的反汇编引擎;反汇编模块:对于顺序指令序列,进行线性扫描式的反汇编处理;对于目的地址明确的跳转,直接跳转至目标地址进行反汇编,对于目标地址为寄存器的间接地址跳转,调用目标地址分析模块进行目标地址分析,得到目标地址后跳转至相应位置进行反汇编,并构建相应的控制流图节点。优选地,所述目标地址分析模块包括:路径条件符号计算模块:对程序进行符号执行,分析推导抵达间接跳转指令处所需满足的条件,输出一个条件公式;SMT求解器模块:对所述路径条件符号计算模块输出的条件公式进行求解,计算公式中变量的可行取值;二进制仿真模块:以SMT求解器模块中获取的变量可行值作为输入参数,仿真执行相应的指令序列,以跟踪指令序列运行过程中的寄存器中值的变化,最终确定间接跳转指令的目的地址,以之作为下一条待反汇编指令的地址,使用反汇编与控制流图生成模块重新处理指令。优选地,所述反汇编模块中的反汇编采用递归下降的反汇编方法。与现有技术相比,本专利技术公开的一种目标代码控制流图生成系统,具有如下有益效果:该模块通过符号执行,SMT求解器求解,模拟执行的方式,对间接地址寄存器的值进行分析,以计算出相应的目的地址,使得控制流图更加完善。通过模拟执行计算的目的地址,是真实运行环境下可能存在的值,使得生产的控制流图相对抽象解释模块获得的控制流图而言更加精确。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:附图1示出了本专利技术的目标代码控制流图生成系统示例图;附图2示出了本专利技术的目标代码控制流图生成方法流程图;附图3示出了本专利技术的目标代码控制流图生成系统中的预处理模块框架图;附图4示出了本专利技术的目标代码控制流图生成系统中的反汇编与控制流图生成模块框架图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。如图1所示,本专利技术公开一种目标代码控制流图生成系统,包括:预处理模块:负责对目标代码文件进行封装格式的识别,定位程序指令的入口地址;反汇编与控制流图生成模块:负责机器指令的反汇编与控制流图生成;目标地址分析模块:负责间接跳转指令处目的地址的可能值分析计算。所述的目标代码控制流图生成系统执行的目标代码控制流图生成方法流程图如图2所示,该方法包括:B1.输入需要生成控制流图的目标代码文件路径,系统读取目标代码文件;B2.预处理器(相当于系统中的预处理模块)对目标代码文件进行预处理,定位程序的入口地址;B3.反汇编与控制流图生成模块读取指令,判断指令是否存在,若存在,则读取成功,则跳转至步骤B4,读取失败,则跳转至步骤B9;B4.对指令进行反汇编;B5.判断指令是否是间接指令跳转,若指令不是间接跳转指令,则按照一般的控制流图生成算法进行节点与连接边的生成,即,生成一个控制流图节点,构造一条边连接上一节点到本节点,回到B3;若指令是间接跳转指令,则跳转至步骤B6;B6.分析到达间接跳转指令的路径,使用符号执行分析得到抵达该间接跳转指令的路径条件;B7.使用SMT求解器对B6所得路径条件公式进行求解,获得输入参数,即一个测试用例;B8.使用二进制仿真器,仿真抵达间接跳转指令的指令序列,获取到达间接跳转指令时存储间接跳转指令寄存器中的值,即跳转的目标地址,以之作为下一条反汇编指令的地址,回到B3;B9.输出控制流图;B10.结束;如图3所示,如上所述的目标代码控制流图生成系统中,所述预处理模块包括:文件类型识别模块:通过特定封装格式文件头部数据结构的匹配,进行文件类型的识别;目标平台确定模块:解析读取目标代码文件的头部数据,确定目标代码的目标平台;入口偏移地址定位模块:解析读取目标代码文件的头部数据,定位目标文件指令序列的入口偏移地址。如图4所示,如上所述的目标代码控制流图生成系统中,所述反汇编与控制流图生成模块包括:反汇编引擎选择模块:根据预处理模块所识别的目标平台信息,自动选择相应的反汇编引擎;反汇编模块:对于目的地址明确的跳转,直接跳转至目标地址进行反汇编,对于目标地址为寄存器的间接地址跳转,调用目标地址分析模块进行目标地址分析,得到目标地址后调到相应位置进行反汇编,并构建相应的控制流图节点。如图1所示,如上所述的目标代码控制流图生成系统中,所述目标地址分析模块包括:路径条件符号计算模块(相当于符号执行模块):对程序进行符号执行,分析推导抵达间接跳转指令处所需满足的条件,输出一个条件公式;SMT求解器模块:对所述反汇编引擎选择模块输出的条件公式进行求解,计算公式中变量的可行取值,获得输入参数;二进制仿真模块:利用所述反汇编模块中获得的可能值,仿真执行相应的指令序列,以跟踪指令序列运行过程中的寄存器中值的变化,最终确定间接跳转指令的目的地址,以之作为下一条反汇编指令的地址,反汇编与控制流图生成模块重新读取指令。优选的,如上所述的目标代码控制流图生成系统中,所述反汇编模块中的反汇编采用递归下降的反汇编方法。通过本专利技术的系统,得到了一个精确而完善的控制流图,能够帮助研究人员对程序结构进行直观的认识。具体地,通过对间接地址寄存器的值进行分析,计算出相应的目本文档来自技高网...
一种目标代码控制流图生成系统

【技术保护点】
一种目标代码控制流图生成系统,其特征在于,包括:预处理模块:用于对目标代码文件进行封装格式的识别,定位程序指令的入口地址;反汇编与控制流图生成模块:用于机器指令的反汇编与控制流图生成;目标地址分析模块:用于间接跳转指令处目的地址的可能值分析计算。

【技术特征摘要】
1.一种目标代码控制流图生成系统,其特征在于,包括:预处理模块:用于对目标代码文件进行封装格式的识别,定位程序指令的入口地址;反汇编与控制流图生成模块:用于机器指令的反汇编与控制流图生成;目标地址分析模块:用于间接跳转指令处目的地址的可能值分析计算。2.如权利要求1所述的目标代码控制流图生成系统,其特征在于,所述预处理模块包括:文件类型识别模块:通过对特定封装格式文件头部数据结构的匹配,进行文件类型的识别;目标平台确定模块:读取并解析目标代码文件的头部数据,确定目标代码的目标平台;入口偏移地址定位模块:读取并解析目标代码文件的头部数据,定位目标文件指令序列的入口偏移地址。3.如权利要求1或2所述的目标代码控制流图生成系统,其特征在于,所述反汇编与控制流图生成模块包括:反汇编引擎选择模块:根据预处理模块所识别的目标平台信息,自动选择相应的反汇编引擎;反汇编模块:对于顺序指令序列,进行线性扫描式的反汇编处理;对于目的地址明确的...

【专利技术属性】
技术研发人员:何积丰熊家文史建琦黄滟鸿李昂方徽星
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海,31

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

1