【技术实现步骤摘要】
本专利技术属于逆向工程和程序分析领域,具体涉及一种识别嵌套循环结构的方法,可用于反编译、软件测试等设备中,能够有效的将程序控制流图结构化。
技术介绍
反编译是从可执行文件获得与源程序等效的高级代码的技术,是逆向工程领域的核心技术之一,在不同的应用领域发挥着重要的作用。最初,反编译技术主要应用于辅助程序移植,如将程序从第二代计算机向第三代计算机迁移;到了70年代和80年代,反编译技术开始被用于再工程(Re-engineering),包括对遗失源码或第三方的二进制程序进行理解、文档化、重构和修改;从90年代中后期开始,信息安全领域对反编译技术有了巨大的应用需求,比如挖掘软件安全漏洞、分析恶意软件等工作,都对反编译技术有着很高的依赖。控制流分析是反编译中的重要研究领域,复合条件分支识别、嵌套循环识别和多路分支(switch)识别是其中最重要的三个控制结构识别问题,也是反编译自动化的核心技术之一。如果不能准确识别这三种控制结构,会严重制约反编译技术的发展,限制反编译技术在其它领域的应用。本专利技术关注控制流分析中循环结构的识别。循环是用来实现重复指令的控制结构。在控制流图中,循环经常嵌套在其它循环内部。这种现象产生了被称作“循环嵌套森林”的结构。尽管现代的程序使用结构化的编程方法,但当高级语言程序被编译成了二进制程序以后,其中的循环结构常常因为内部的多层嵌套循环的跳转指令(例如break语句,continue语句和return语句等),其单入口的结构化特性遭到了破坏,不再符合结构化原则,即其对应的控制流图是不可规约的。如图1所示为一个典型的不可规约循环的控制流图 ...
【技术保护点】
一种嵌套循环结构的识别方法,其步骤包括:1)对可执行文件进行反汇编,得到该可执行文件的中间代码;2)从上述中间代码中提取控制流信息,得到控制流图;3)深度优先遍历控制流图,得到循环结构子图,该循环结构包括:3 -1)循环头节点;3-2)循环体节点,及其最内层循环头节点;3-3)重入口节点,及其重入边;4)标记上述节点的最内层循环头节点;5)将上述循环结构子图识别循环结构。
【技术特征摘要】
1. 一种嵌套循环结构的识别方法,其步骤包括:1)对可执行文件进行反汇编,得到该可执行文件的中间代码;2)从上述中间代码中提取控制流信息,得到控制流图;3)深度优先遍历控制流图,得到循环结构子图,该循环结构包括:3-1)循环头节点;3-2)循环体节点,及其最内层循环头节点;3-3)重入口节点,及其重入边;4)标记上述节点的最内层循环头节点;5)将上述循环结构子图识别循环结构。2. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一后继节点没有被遍历,且处于深度优先生成树上从控制流图入口节点到当前访问节点的路径上,则该后继节点为循环头节点,将该后继节点加入该当前访问节点的循环头节点列表中。3. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一后继节点没有被遍历过,则遍历该后继节点,如该后继节点位于一循环体内,则当前访问节点为循环体节点,将该后继节点的最内层循环头节点加入该当前访问节点的循环头节点列表中。4. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一后继节点被遍历过,且不处于深度优先生成树上从控制流图入口节点到当前访问节点的路径上,但该后继节点位于有最内层循环头节点位于深度优先生成树上从控制流图入口节点到当前访问...
【专利技术属性】
技术研发人员:韦韬,李佳静,毛剑,邹维,王铁磊,王伟,
申请(专利权)人:北京大学,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。