专利汇可以提供一种嵌套循环结构的识别方法专利检索,专利查询,专利分析的服务。并且本 发明 属于逆向工程和程序分析领域,具体涉及一种识别循环结构的方法对可执行文件进行反汇编,得到该可执行文件的中间代码;从上述中间代码中提取控制流信息,得到 控制流图 ;深度优先遍历控制流图,识别循环 节点 ;标记节点的最内层循环头节点;将对应的控制流图识别为循环结构。本发明可以有效判定循环结构,以及它们之间的嵌套关系,进而有效结构化程序控制流图。可用于反编译、 软件 测试等设备中。,下面是一种嵌套循环结构的识别方法专利的具体信息内容。
1. 一种嵌套循环结构的识别方法,其步骤包括:
1)对可执行文件进行反汇编,得到该可执行文件的中间代码;
2)从上述中间代码中提取控制流信息,得到控制流图;
3)深度优先遍历控制流图,得到循环结构子图,该循环结构包括:
3-1)循环头节点;
3-2)循环体节点,及其最内层循环头节点;
3-3)重入口节点,及其重入边;
4)标记上述节点的最内层循环头节点;
5)将上述循环结构子图识别循环结构。
2. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一 后继节点没有被遍历,且处于深度优先生成树上从控制流图入口节点到当前访问节点的路径 上,则该后继节点为循环头节点,将该后继节点加入该当前访问节点的循环头节点列表中。
3. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一 后继节点没有被遍历过,则遍历该后继节点,如该后继节点位于一循环体内,则当前访问节 点为循环体节点,将该后继节点的最内层循环头节点加入该当前访问节点的循环头节点列表 中。
4. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一 后继节点被遍历过,且不处于深度优先生成树上从控制流图入口节点到当前访问节点的路径 上,但该后继节点位于有最内层循环头节点位于深度优先生成树上从控制流图入口节点到当 前访问节点的路径上的循环体内,则该当前访问节点为循环体节点,将该最内层循环头节点 加入该当前访问节点的循环头节点列表中。
5. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点,如其一 后继节点被遍历过,且不处于深度优先生成树上从控制流图入口节点到当前访问节点的路径 上,但该后继节点位于无最内层循环头节点位于深度优先生成树上从控制流图入口节点到当 前访问节点的路径上的循环体内,则该后继节点为重入口节点,从该当前访问节点到该后继 节点的有向边为重入边。
6. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对于当前访问的节点和需加入 的循环头节点,将该循环头节点和它的循环头节点列表根据其在深度优先生成树上从控制流 图入口节点到当前访问节点的路径上的关系加入到当前访问节点的循环头节点列表中,将该 列表中每节点的最内层循环头节点标记为在该循环头节点列表中与该节点同在一循环体内且 到达该节点的正向路径最短的循环头节点。
7. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于所述节点为扩展后的节点。
8. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对可执行文件通过反汇编工具 IDAPro进行反汇编。
9. 如权利要求1所述的嵌套循环结构的识别方法,其特征在于对可执行文件通过反汇编工具 Objdump进行反汇编。
本发明属于逆向工程和程序分析领域,具体涉及一种识别嵌套循环结构的方法,可用于 反编译、软件测试等设备中,能够有效的将程序控制流图结构化。
, ,r∈L-{h},r称 作这个循环的重入口,称作重入边。
最内层循环:循环体内的一个节点n,它的最内层循环是包含n的最小循环。
最内层循环头:n的最内层循环的循环头称作n的最内层循环头。
循环头列表:n的循环头列表包含n的最内层循环头h1,h1的最内层循环头h2,h2的最内 层循环头h3,以此类推。
本发明的一种嵌套循环结构的识别方法,其步骤包括:
1)对可执行文件进行反汇编,得到该可执行文件的中间代码;
2)从上述中间代码中提取控制流信息,得到控制流图;
3)深度优先遍历控制流图,得到循环结构子图,该循环结构包括:
3-1)循环头节点;
3-2)循环体节点,及其最内层循环头节点;
3-3)重入口节点,及其重入边;
4)标记上述节点的最内层循环头节点;
5)将上述循环结构子图识别为循环结构。
识别循环头节点的方法在于对于当前访问的节点,如其一后继节点没有被遍历,且处于 深度优先生成树上从控制流图入口节点到当前访问节点的路径上,则该后继节点为循环头节 点,将该后继节点加入该当前访问节点的循环头节点列表中。
识别循环体节点的方法在于对于当前访问的节点,如其一后继节点没有被遍历过,则遍 历该后继节点,如该后继节点位于一循环体内,则当前访问节点为循环体节点,将该后继节 点的最内层循环头节点加入该当前访问节点的循环头节点列表中。或对于当前访问的节点, 如其一后继节点被遍历过,且不处于深度优先生成树上从控制流图入口节点到当前访问节点 的路径上,但该后继节点位于有最内层循环头节点位于深度优先生成树上从控制流图入口节 点到当前访问节点的路径上的循环体内,则该当前访问节点为循环体节点,将该最内层循环 头节点加入该当前访问节点的循环头节点列表中。
识别重入口节点的方法在于对于当前访问的节点,如其一后继节点被遍历过,且不处于 深度优先生成树上从控制流图入口节点到当前访问节点的路径上,但该后继节点位于无最内 层循环头节点位于深度优先生成树上从控制流图入口节点到当前访问节点的路径上的循环体 内,则该后继节点为重入口节点,从该当前访问节点到该后继节点的有向边为重入边。
标记上述节点的最内层循环头节点的方法为对于当前访问的节点和需加入的循环头节 点,将该循环头节点和它的循环头节点列表根据其在深度优先生成树上从控制流图入口节点 到当前访问节点的路径上的关系加入到当前访问节点的循环头节点列表中,将该列表中每节 点的最内层循环头节点标记为在该循环头节点列表中与该节点同在一循环体内且到达该节点 的正向路径最短的循环头节点。
上述节点为扩展后的节点,控制流图为扩展控制流图。
在反汇编获得的控制流图基础上,由如下方法获得扩展控制流图:
1)对于控制流图中任意两个节点b、c,如果点b、c满足:{b}=Pred(c)且{c}=Succ(b), 则将b和c合并为一个新的节点b′,在程序控制流图中代替b、c;
重复1)中合并、替代过程,直至程序控制流图中任意两个节点都不满足1)中合并条件。
本发明的效果在于:可以有效判定循环结构,以及它们之间的嵌套关系,进而达到有效 结构化程序控制流图的目的。
本发明有如下优势:
1.本发明方法比P.Havlak的方法和G.Ramalingam的方法更加准确,在循环结构不是严 格的嵌套关系的时候也能识别循环结构以及循环之间的嵌套关系,提高反编译后程序的结构 化程度;
2.本发明所述方法P.Havlak的方法和G.Ramalingam的方法提出的方法效率高,只需要 对程序进行一次深度优先遍历就可以识别程序中的所有循环,实验表明比P.Havlak的方法快 2~5倍;
3.本发明所述方法P.Havlak的方法和G.Ramalingam的方法易于实现,不需要使用 Interval/DSG等复杂数据结构以及多次迭代进行辅助识别。
本发明所述方法完全自动化识别可执行代码中的循环结构。该方法实现简单,识别结果 准确,而且方法复杂度低,识别效率高。
附图说明
图1是不可规约循环的控制图示例。
图2是图1中对应的循环嵌套森林图。
图3是识别循环结构的整体流程图。
图4是识别循环节点控制流图。
图5是识别循环节点情况示意图。
图6是标记循环头节点列表工作流程图。
图7是标记循环头节点列表情况示意图
图8是循环节点识别伪代码。
图9是标记循环头节点列表伪代码。
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
一种人体解剖结构模型、植入物快速成型方法 | 2020-11-20 | 0 |
一种车载电缆故障综合测试系统 | 2021-03-09 | 1 |
车间设备智能管理方法 | 2021-06-09 | 0 |
一种大型铸钢件压箱、打箱的方法 | 2021-09-20 | 2 |
一种镂空圆环形空间网格结构装配式节点 | 2021-02-24 | 0 |
一种离子注入样品台 | 2021-07-19 | 0 |
一种激光加工现场图形显示方法 | 2020-09-08 | 2 |
一种可实现扑固翼结构转换的机电装置及飞行器 | 2020-10-13 | 0 |
一种用于转向架安装板螺栓预紧力测试装置 | 2021-03-12 | 0 |
旋轉凸輪式真空切換模組 | 2021-12-29 | 2 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。