# C 语言反编译器保真度问题分类

> 对反编译所得与原始 C 函数构成的代码对进行开放式编码，归纳反编译器输出在缺失名称与类型之外如何偏离源码。作者借助语句对齐抽象与主题分析，构建包含 15 个顶层类别、共 52 个编码的层级化编码手册，既涵盖不等价表达式、错误返回行为等正确性问题，也涵盖多余变量、不符合惯用写法的控制流及反编译器特有宏等可读性问题。该编码手册基于 Hex-Rays 输出建立，并应用于 Ghidra、retdec 与 angr；作者据此提出以类型预测、基于规则的修正及整程序级学习技术来应对各类缺陷。

- 作者：Luke Dramko; Jeremy Lacomis; Edward J. Schwartz; Bogdan Vasilescu; Claire Le Goues
- 原标题：A Taxonomy of C Decompiler Fidelity Issues
- 发表载体：USENIX Security 2024
- 发表状态：会议论文
- 出版／提交日期：2024 年 8 月
- 日期依据：采用 USENIX 官方 BibTeX（month = aug）及第 33 届 USENIX Security Symposium（2024 年 8 月 14–16 日）最终版 PDF 封面所载的出版月份，不推定具体出版日。
- 来源复核于：2026-10-27
- 收录于：2026-11-04
- 原始论文：<https://www.usenix.org/conference/usenixsecurity24/presentation/dramko>
- PDF：<https://www.usenix.org/system/files/usenixsecurity24-dramko.pdf>
- BibTeX：<https://awesomerea.org/papers/citations/paper-decompiler-fidelity-taxonomy.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-decompiler-fidelity-taxonomy/>
- 记录 JSON：<https://awesomerea.org/papers/paper-decompiler-fidelity-taxonomy/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-decompiler-fidelity-taxonomy/index.md)

## 研究范围与局限

这是定性分类，并非基准分数或反编译器排名。编码主要基于从小函数集中随机抽取的 200 个 Hex-Rays 反编译／原始函数对，另加十个大型函数；作者报告共编码 235 个函数对。Ghidra、retdec 与 angr 仅在 25 个函数的子样本上与 Hex-Rays 比较。输入是对多数代码为 C 的 GitHub 仓库经 GHCC 构建后的 Hex-Rays 反编译结果，偏向具有可识别且可用构建脚本的项目，并经过一个也误删部分有效函数的过滤步骤；数据集不含混淆二进制，也不太可能包含恶意软件。缺失的变量名与类型被有意不作标注。Java 检查作为附带研究，将编码手册应用于 25 个经 JD-GUI 反编译的 Defects4J 函数。这些问题对逆向工程人员工作效率的影响留待后续研究。

## 与本合集的关联

补充关于反编译 C 代码错在何处的实证分类，与采用自动评分的反编译基准及 FidelityGPT 等大语言模型修复方法互补。

## 发表与复核说明

未核实论文 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 标识编码示例与编码手册，并非本论文。论文只注明 JD-GUI 的版本（1.6.6），未给出 Hex-Rays、Ghidra、retdec 或 angr 的版本。编码者间一致性以 Cohen’s kappa 报告，罕见问题的一致性较弱。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity24/presentation/dramko>
2. <https://www.usenix.org/system/files/usenixsecurity24-dramko.pdf>
3. <https://zenodo.org/records/8419614>
4. <https://zenodo.org/api/records/8419614>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
