[发明专利]一种新的使用逆向扩展控制流图的静态函数识别方法有效
| 申请号: | 201310291941.0 | 申请日: | 2013-07-12 |
| 公开(公告)号: | CN103440122A | 公开(公告)日: | 2013-12-11 |
| 发明(设计)人: | 邱景;苏小红;马培军;赵玲玲;王甜甜 | 申请(专利权)人: | 哈尔滨工业大学 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 150000 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 使用 逆向 扩展 控制 静态 函数 识别 方法 | ||
1.一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述方法包括如下步骤:
步骤1:建立区域逆向扩展控制流图的集合;
步骤2:对逆向扩展控制流图去噪,删除构建逆向扩展控制流图过程中搜索出的非编译器能生成的节点;
步骤3:删除和合并逆向扩展控制流图;
步骤4:在逆向扩展控制流图中识别函数入口;
步骤5:得到指定区域中多个函数的识别结果。
2.根据权利要求1所述的一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述步骤1的具体过程如下:
对指定的代码区域,从所有符合函数返回指令特征的地址自底向上构造对应的逆向扩展控制流图,形成区域逆向扩展控制流图的集合。
3.根据权利要求2所述的一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述逆向扩展控制流图的构造过程分为两步:
第一步,逆向构造初始图:首先将搜索起点加入图中,反复对图中新加入的点搜索其所有可能的前驱;
第二步,对于图中的分支指令的跳转目标,使用现有常见的基于控制流的递归遍历方法,将从这些跳转目标开始的控制流图加入到当前逆向扩展控制流图中。
4.根据权利要求1所述的一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述步骤2用于逆向扩展控制流图去噪的步骤包括如下步骤:
步骤21:删除非法条件分支指令,包括无前驱节点的条件分支指令、跳转目标为非法内存地址的条件分支指令、两条分支中存在字节重叠指令的条件分支指令;
步骤22:删除不以函数返回指令、跳转指令、CALL指令为结尾的路径;
步骤23:检查每条路径,删除成对指令不匹配的节点及其所有前驱;
步骤24:删除高权限指令及其所有前驱,包括中断相关指令、停机指令、CPU特殊寄存器操作指令;
步骤25:删除无实际意义的指令,包括NOP、断点指令、加0指令、减0指令、与0的逻辑或、移动次数为0的移位操作指令、源操作数和目的操作数相同的传送指令;
步骤26:将包含逆向搜索起点的子图作为新的逆向扩展控制流图;
步骤27:重复步骤21~26,直至图不再变化为止。
5.根据权利要求1所述的一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述步骤3用于删除和合并逆向扩展控制流图的步骤包括如下步骤:
步骤31:枚举区域逆向扩展控制流图集合中任意两个逆向扩展控制流图,若一个图的逆向搜索起点在另一个图中,从区域逆向扩展控制流图集合中删除节点数较少的一个图;
步骤32:枚举区域逆向扩展控制流图集合中任意两个逆向扩展控制流图,若一个图的逆向搜索起点为另一图中某点对应指令的一部分,则根据图的指令长度总和、圈复杂度、全位数指令百分比,使用多属性决策理想点法删除相对较差的一个图。
6.根据权利要求1所述的一种新的使用逆向扩展控制流图的静态函数识别方法,其特征在于所述步骤4用于在一个逆向扩展控制流图中识别函数入口的步骤包括如下步骤:
步骤41:从图中每个没有前驱的点出发遍历得到以此点为入口点的控制流图;
步骤42:根据图的指令长度总和、圈复杂度、全位数指令百分比,使用多属性决策理想点法决策出最优的控制流图作为函数的识别结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310291941.0/1.html,转载请声明来源钻瓜专利网。





