[发明专利]一种目标代码控制流图生成系统有效
申请号: | 201611169736.7 | 申请日: | 2016-12-16 |
公开(公告)号: | CN106648818B | 公开(公告)日: | 2019-06-14 |
发明(设计)人: | 何积丰;熊家文;史建琦;黄滟鸿;李昂;方徽星 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F8/53 | 分类号: | G06F8/53 |
代理公司: | 北京辰权知识产权代理有限公司 11619 | 代理人: | 郎志涛 |
地址: | 200062 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 目标 代码 控制 生成 系统 | ||
本发明公开了一种基于符号执行的目标代码控制流图生成系统,该系统包括预处理模块、反汇编与控制流图生成模块、目标地址分析模块。其中,预处理模块用于目标代码文件的格式识别与程序入口地址的定位,反汇编与控制流图生成模块用于机器指令的翻译与控制流图的生成,目标地址分析模块用于间接跳转指令处目的地址的可能值分析计算,其采用符号执行、SMT求解器求解、自动测试用例生成、二进制仿真执行的模块。本发明的系统对间接地址跳转地址进行了分析,其生成的控制流图,相比于一般模块生成的控制流图,具有更加精确、相对完整的特点。
技术领域
本发明涉及一种计算机技术领域,尤其是涉及基于符号执行的目标代码控制流图生成系统。
背景技术
面对众多的无法获取源码的目标程序,研究人员不得不需要通过逆向工程的手段对程序的目标代码进行分析。在分析过程中,一个精确而完善的控制流图能够帮助研究人员对程序结构进行直观的认识,以辅助其进一步的深入分析与理解。
通常,人们通过反汇编的手段,对目标代码进行反汇编,根据程序中的跳转与子过程调用,生成相应的控制流节点,构造出相应的控制流图。
而在控制流图构造的过程中,通常会遭遇到间接地址跳转的问题。间接跳转地址是指目标地址存放在内存或寄存器中的跳转地址,这类值通常无法通过静态分析得到。
而在一些控制流图生成工具的实现中,采用了抽象解释的模块,使用近似值的模块对控制流进行扩充。这种模块相对不够精确,同时引入了不该存在的控制流路径。
发明内容
本发明的目的是通过以下技术方案实现的。
具体的,本发明公开一种目标代码控制流图生成系统,其特征在于,包括:
预处理模块:用于对目标代码文件进行封装格式的识别,定位程序指令的入口地址;
反汇编与控制流图生成模块:用于机器指令的反汇编与控制流图生成;
目标地址分析模块:用于间接跳转指令处目的地址的可能值分析计算。
优选地,所述预处理模块包括:
文件类型识别模块:通过对特定封装格式文件头部数据结构的匹配,进行文件类型的识别;
目标平台确定模块:读取并解析目标代码文件的头部数据,确定目标代码的目标平台;
入口偏移地址定位模块:读取并解析目标代码文件的头部数据,定位目标文件指令序列的入口偏移地址。
优选地,所述反汇编与控制流图生成模块包括:
反汇编引擎选择模块:根据预处理模块所识别的目标平台信息,自动选择相应的反汇编引擎;
反汇编模块:对于顺序指令序列,进行线性扫描式的反汇编处理;对于目的地址明确的跳转,直接跳转至目标地址进行反汇编,对于目标地址为寄存器的间接地址跳转,调用目标地址分析模块进行目标地址分析,得到目标地址后跳转至相应位置进行反汇编,并构建相应的控制流图节点。
优选地,所述目标地址分析模块包括:
路径条件符号计算模块:对程序进行符号执行,分析推导抵达间接跳转指令处所需满足的条件,输出一个条件公式;
SMT求解器模块:对所述路径条件符号计算模块输出的条件公式进行求解,计算公式中变量的可行取值;
二进制仿真模块:以SMT求解器模块中获取的变量可行值作为输入参数,仿真执行相应的指令序列,以跟踪指令序列运行过程中的寄存器中值的变化,最终确定间接跳转指令的目的地址,以之作为下一条待反汇编指令的地址,使用反汇编与控制流图生成模块重新处理指令。
优选地,所述反汇编模块中的反汇编采用递归下降的反汇编方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611169736.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:布料(36)
- 下一篇:一种基于编辑器的国际化代码转换方法