[发明专利]一种嵌套循环结构的识别方法无效
| 申请号: | 200710090003.9 | 申请日: | 2007-03-23 |
| 公开(公告)号: | CN101271397A | 公开(公告)日: | 2008-09-24 |
| 发明(设计)人: | 韦韬;李佳静;毛剑;邹维;王铁磊;王伟 | 申请(专利权)人: | 北京大学 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45 |
| 代理公司: | 北京君尚知识产权代理事务所 | 代理人: | 余长江 |
| 地址: | 100871*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 嵌套 循环 结构 识别 方法 | ||
技术领域
本发明属于逆向工程和程序分析领域,具体涉及一种识别嵌套循环结构的方法,可用于反编译、软件测试等设备中,能够有效的将程序控制流图结构化。
背景技术
反编译是从可执行文件获得与源程序等效的高级代码的技术,是逆向工程领域的核心技术之一,在不同的应用领域发挥着重要的作用。最初,反编译技术主要应用于辅助程序移植,如将程序从第二代计算机向第三代计算机迁移;到了70年代和80年代,反编译技术开始被用于再工程(Re-engineering),包括对遗失源码或第三方的二进制程序进行理解、文档化、重构和修改;从90年代中后期开始,信息安全领域对反编译技术有了巨大的应用需求,比如挖掘软件安全漏洞、分析恶意软件等工作,都对反编译技术有着很高的依赖。
控制流分析是反编译中的重要研究领域,复合条件分支识别、嵌套循环识别和多路分支(switch)识别是其中最重要的三个控制结构识别问题,也是反编译自动化的核心技术之一。如果不能准确识别这三种控制结构,会严重制约反编译技术的发展,限制反编译技术在其它领域的应用。本发明关注控制流分析中循环结构的识别。
循环是用来实现重复指令的控制结构。在控制流图中,循环经常嵌套在其它循环内部。这种现象产生了被称作“循环嵌套森林”的结构。尽管现代的程序使用结构化的编程方法,但当高级语言程序被编译成了二进制程序以后,其中的循环结构常常因为内部的多层嵌套循环的跳转指令(例如break语句,continue语句和return语句等),其单入口的结构化特性遭到了破坏,不再符合结构化原则,即其对应的控制流图是不可规约的。如图1所示为一个典型的不可规约循环的控制流图。图2为它所对应的“循环嵌套森林”。
嵌套循环的识别是结构化程序设计语言中循环语句的编译问题的逆命题。就是如何识别二进制程序中的循环结构的范围以及它们之间的嵌套关系,从而使反编译生成的高级语言程序结构仍然保持较好的结构化特性。如果不能准确识别循环结构的范围以及它们之间的嵌套关系,则可能影响到反编译最终生成的源程序的语意的准确性以及结构化特性。
对循环识别的研究开始于1970年,F.E.Allen和J.Cocke提出了控制图的可归约性(参见F.E.Allen.Control flow analysis.SIGPLAN Notices,5(7)1:19,1970),此后编译和反编译领域的工作都开始关注这个问题。
1997年,P.Havlak在R.E.Tarjan(参见R.E.Tarjan,Testing flow graph reducibility,J.Comput.Syst.Sci.9,1974)的基础上提出了对常规控制流图的近似线性时间的算法(参见P.Havlak,Nesting of reducible and irreducible loops,ACM Transactions on Programming Languages andSystems,Vol.19,No.4,1997)。
两年后G.Ramalingam提出了对Havlak算法的一个改进算法(参见G.Ramalingam,Identifying loops in almost linear time,ACM Transactions on Programming Languages andSystems,Vol.21,No.2,1999),在最差情况下近似线性时间的算法(但是在常规情况下比Havlak算法慢)。
上述方法通常基于复杂的数据结构,例如Interval/DSG,或者UNION-FIND集合,对这些数据集合的复杂操作使得这些算法的效率很低。
本发明提出了一种在二进制可执行程序中识别循环的新方法,该方法只需要对控制流图进行一次深度优先搜索就可以准确的处理不可归约的控制流图,并且不需要复杂的数据结构。该方法已经对Windows XP和linux下的多个典型的可执行文件进行了分析,实验表明该方法近似线性时间,并且比Havlak的算法快2~5倍。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710090003.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种路由失败原因的反馈和处理方法及系统
- 下一篇:乙草胺的甲叉法生产工艺





