2024 · 会议论文
C 语言反编译器保真度问题分类
A Taxonomy of C Decompiler Fidelity Issues
对反编译所得与原始 C 函数构成的代码对进行开放式编码,归纳反编译器输出在缺失名称与类型之外如何偏离源码。作者借助语句对齐抽象与主题分析,构建包含 15 个顶层类别、共 52 个编码的层级化编码手册,既涵盖不等价表达式、错误返回行为等正确性问题,也涵盖多余变量、不符合惯用写法的控制流及反编译器特有宏等可读性问题。该编码手册基于 Hex-Rays 输出建立,并应用于 Ghidra、retdec 与 angr;作者据此提出以类型预测、基于规则的修正及整程序级学习技术来应对各类缺陷。
研究范围与局限
这是定性分类,并非基准分数或反编译器排名。编码主要基于从小函数集中随机抽取的 200 个 Hex-Rays 反编译/原始函数对,另加十个大型函数;作者报告共编码 235 个函数对。Ghidra、retdec 与 angr 仅在 25 个函数的子样本上与 Hex-Rays 比较。输入是对多数代码为 C 的 GitHub 仓库经 GHCC 构建后的 Hex-Rays 反编译结果,偏向具有可识别且可用构建脚本的项目,并经过一个也误删部分有效函数的过滤步骤;数据集不含混淆二进制,也不太可能包含恶意软件。缺失的变量名与类型被有意不作标注。Java 检查作为附带研究,将编码手册应用于 25 个经 JD-GUI 反编译的 Defects4J 函数。这些问题对逆向工程人员工作效率的影响留待后续研究。
与本合集的关联
补充关于反编译 C 代码错在何处的实证分类,与采用自动评分的反编译基准及 FidelityGPT 等大语言模型修复方法互补。
发表与复核详情
- 发表载体
- USENIX Security 2024
- 发表状态
- 会议论文
- 出版/提交日期
- 2024 年 8 月
- 日期依据
- 采用 USENIX 官方 BibTeX(month = aug)及第 33 届 USENIX Security Symposium(2024 年 8 月 14–16 日)最终版 PDF 封面所载的出版月份,不推定具体出版日。
未核实论文 DOI 或 arXiv 标识符;本条目采用经审阅的 USENIX Security 2024 报告页面与 usenixsecurity24-dramko.pdf 配对规则。USENIX BibTeX 给出第 33 届 USENIX Security Symposium、页码 379–396、出版方 USENIX Association 及八月份;报告页面另链接预发表版 PDF。论文“可用性”一节指向 Zenodo DOI 10.5281/zenodo.8419614,这是同五位作者于 2023-11-07 发布的 CC BY 4.0 数据集记录,包含 codebook.pdf 与 dataset.zip;该 DOI 标识编码示例与编码手册,并非本论文,因此仅在此说明,不作为论文 DOI 或代码链接。论文只注明 JD-GUI 的版本(1.6.6),未给出 Hex-Rays、Ghidra、retdec 或 angr 的版本。编码者间一致性以 Cohen’s kappa 报告,罕见问题的一致性较弱。本次未下载 Zenodo 文件,也未运行任何反编译器。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。