2015 · 会议论文

告别 goto:基于模式无关控制流结构化与语义保持变换的反编译

No More Gotos: Decompilation Using Pattern-Independent Control-Flow Structuring and Semantics-Preserving Transformations

DREAM 是一种反编译器,其控制流结构化方法无需匹配预定义的区域模式,即可从恢复出的控制流图中还原循环、条件语句与 switch 语句。对于无环区域,它计算每个节点的可达条件,再将这些条件细化为 if-then-else 与 switch 结构;有环区域被结构化为循环,并推断循环类型及继续条件。语义保持变换先将具有多个入口或多个后继的有环区域改写为单入口、单后继区域;当重复测试的条件中变量可能被修改时,引入布尔变量以保持语义等价。作者在 GNU coreutils 上报告其输出不含 goto 语句,而 Hex-Rays 与 Phoenix 各产生数千个;在一对一比较中,DREAM 有 72.7% 的函数比 Hex-Rays 更紧凑,与 Phoenix 相比该比例为 98.8%。

研究范围与局限

正确性在源码级控制流图上评估:作者使用 joern 从经过预处理的 coreutils 8.22 源码中提取控制流图,对 joern 成功解析的 1,530 个函数重新结构化(1,738 个函数中有 208 个解析失败),重新编译后通过 coreutils 测试。该实验检验的是结构化算法,而不是对二进制的端到端反编译,也不涉及变量或类型恢复。结构化程度与紧凑度在 Phoenix 评测所用的 coreutils 8.17 二进制上测量,只统计三种工具都能反编译的函数,并以代码行数衡量紧凑度。Phoenix 当时尚未发布,其输出由其作者提供;2014 年的 Hex-Rays v2.0.0.140605 基线早已过时。恶意软件案例分析分别覆盖 ZeusP2P、SpyEye 与 Cridex 各一个样本,且只与 Hex-Rays 比较。作者也指出,更紧凑的代码是否总是更易理解仍有待研究。论文没有链接实现,这些结果也不代表当前反编译器的表现。

与本合集的关联

补充控制流结构化这一反编译阶段,即把恢复出的控制流图转换为结构化高级代码,为合集中的神经网络与大语言模型反编译研究提供基础。

发表与复核详情

发表载体
NDSS 2015
发表状态
会议论文
出版/提交日期
2015 年(具体日期未核实)
日期依据
Internet Society 向 Crossref 提交的元数据仅给出出版年份 2015;出版方 PDF 另列研讨会日期为 2015 年 2 月 8—11 日,本条目不据此推定出版月份或日期。
DOI
10.14722/ndss.2015.23185

Crossref 给出标题、四位作者顺序及年份 2015,未列页码;DOI 解析至 NDSS 会议议程页面,该页面链接 15 页 PDF 与幻灯片。PDF 页脚标明 NDSS ’15 于 2015 年 2 月 8—11 日在圣迭戈举行,并载有 DOI。评测部分提到一份托管在波恩大学的补充文档,收录反编译后的恶意软件代码清单,本次未审阅。论文未提供代码或项目链接,因此两者均为 null;除论文外未下载或运行任何内容。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://www.ndss-symposium.org/ndss2015/ndss-2015-programme/no-more-gotos-decompilation-using-pattern-independent-control-flow-structuring-and-semantics/
  2. https://api.crossref.org/works/10.14722/ndss.2015.23185
  3. https://www.ndss-symposium.org/wp-content/uploads/2017/09/11_4_2.pdf