[发明专利]一种新的使用逆向扩展控制流图的静态函数识别方法有效
| 申请号: | 201310291941.0 | 申请日: | 2013-07-12 |
| 公开(公告)号: | CN103440122A | 公开(公告)日: | 2013-12-11 |
| 发明(设计)人: | 邱景;苏小红;马培军;赵玲玲;王甜甜 | 申请(专利权)人: | 哈尔滨工业大学 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 150000 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 使用 逆向 扩展 控制 静态 函数 识别 方法 | ||
技术领域
本发明属于软件逆向工程领域,涉及一种使用逆向扩展控制流图的静态函数识别方法。
背景技术
二进制代码审查是针对二进制代码进行的安全审计过程。一定规模的软件难免会使用第三方组件。而第三方组件往往缺乏源代码。如微软系统动态链接库。欲对这样的软件进行代码审查,逆向工程手段几乎是唯一选择。另一方面,当前恶意代码越发猖獗,严重威胁计算机系统安全,恶意代码的检测对于提高计算机系统安全尤为重要。但是绝大部分恶意代码是无法获取到源代码的,因此逆向工程几乎也是唯一的分析手段。
逆向工程的主要步骤为反汇编,识别函数及库函数、变量、结构体等高级语言元素。最后识别各函数的操作语义,通过分析函数间的交叉引用来进一步增强对整个程序语义的理解。由上述步骤可以看出,识别函数是整个逆向工程里至关重要的一个环节。传统静态识别方法使用函数开头字节特征及函数间交叉引用信息来识别函数。在二进制代码中往往大量存在无显著特征和交叉引用的函数,因此传统静态识别方法无法有效识别此类函数。
发明内容
为了解决在指定二进制代码区域中识别无显著特征和交叉引用的多个函数的问题,本发明提供了一种新的使用逆向扩展控制流图的静态函数识别方法。
本发明为解决其技术问题所采用的技术方案的基本思想是:对于指定的二进制代码区域,先假设所有符合函数返回指令(一般为RET指令)特征的地址都是函数返回地址,然后从这些函数返回地址自底向上构造对应的逆向扩展控制流图(Reverse Extended Control Flow Graph,RECFG)。所谓逆向扩展控制流图是指这样一种控制流图,节点代表指令,边代表指令控制依赖,但不同于传统的控制流图的是,它从函数返回指令节点逆向构建一个扩展的控制流图,图中节点的前驱为其前面所有可能存在的指令。图的逆向搜索起点是函数返回指令,它包含了待识别函数的控制流图,因此传统的控制流图是RECFG的子图。对于任意两个RECFG,它们有且仅有三种关系:1)相互独立,即它们是互不连通的图;2)同为一个图的子图,即它们同属一个函数;3)冲突,即一个图的搜索起点(函数返回指令)是另外一个图的某指令的操作数的一部分。对于符合关系2)的两个图,可以将它们合并。对于存在冲突关系的两个图,则采用多属性决策理想点法删除一个图,解决冲突。最终所有独立的RECFG都对应于一个函数。一个函数的入口点只有一个,它可能是一个RECFG中的任意节点。从该节点出发遍历RECFG得到的子图,实际是以此节点为入口点的函数控制流图。函数识别问题因此而转换为函数入口点的识别问题。最终根据每个节点对应的控制流图的属性,使用多属性决策理想点法识别出函数的入口点。
本发明的使用逆向扩展控制流图的静态函数识别方法,包括如下步骤:
步骤1:建立区域逆向扩展控制流图的集合;
步骤2:对逆向扩展控制流图去噪,删除构建RECFG过程中搜索出的非编译器能生成的节点;
步骤3:删除和合并逆向扩展控制流图;
步骤4:在逆向扩展控制流图中识别函数入口;
步骤5:得到指定区域中多个函数的识别结果。
与传统方法不同,本发明以函数的返回指令作为识别特征,以函数返回指令节点作为逆向搜索起点构建逆向扩展控制流图,能够在指定二进制代码区域中识别多个函数,并且能够有效识别传统静态识别方法无法识别的无特定头字节特征及无交叉引用的函数。
附图说明
图1是本发明的流程示意图;
图2是逆向扩展控制流图构造算法;
图3是逆向扩展控制流图构造算法中的逆向搜索算法;
图4是逆向扩展控制流图示意图;
图5是图4的识别结果。
具体实施方式
下面结合附图对本发明的技术方案作进一步的说明,但并不局限如此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
具体实施方式一:本实施方式中的使用逆向扩展控制流图的静态函数识别方法,首先对于指定的二进制代码区域,从所有符合函数返回指令特征的地址构建对应的逆向扩展控制流图;通过计算图的三个属性:指令长度总和、圈复杂度和全位数指令百分比,并使用多属性决策理想点法解决图中可能存在的冲突;最后将函数识别转换为函数入口点的识别问题,即对每个图的每个无前驱节点,计算其遍历得到的子图的三个属性,使用理想点法决策出函数入口点得到最终的函数识别结果。具体步骤如下:
步骤1:建立区域逆向扩展控制流图的集合:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310291941.0/2.html,转载请声明来源钻瓜专利网。





