# 我们走了多远：C 反编译器反编译正确性测试

> 测试 C 反编译器能否保持程序行为。作者的 DecFuzzer 编译由 Csmith 生成的程序，反编译所得可执行文件，在源码中用反编译出的函数替换原函数后重新编译，并比较两个程序的输出；随后通过模输入等价（EMI）变异，从种子程序派生更多测试程序。作者在四种常用反编译器上报告了 1,423 个触发反编译错误的输入，并经人工分析在两个开源反编译器中确认 13 个缺陷。他们认为现代反编译器在功能正确性上取得了切实进展，但类型恢复与优化仍妨碍其输出准确的代码。

- 作者：Zhibo Liu; Shuai Wang
- 原标题：How far we have come: testing decompilation correctness of C decompilers
- 发表载体：ACM ISSTA 2020
- 发表状态：会议论文
- 出版／提交日期：2020 年 7 月 18 日
- 日期依据：ACM 提交的 Crossref 元数据将纸质与在线出版日期均记为 2020-07-18，ACM 论文页面给出的出版日期相同。本条目采用该日期，而非会议日程。
- DOI：10.1145/3395363.3397370
- 来源复核于：2026-10-19
- 收录于：2026-10-29
- 原始论文：<https://dl.acm.org/doi/10.1145/3395363.3397370>
- PDF：<https://dl.acm.org/doi/pdf/10.1145/3395363.3397370>
- 代码：<https://github.com/monkbai/DecFuzzer>
- BibTeX：<https://awesomerea.org/papers/citations/paper-decfuzzer.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-decfuzzer/>
- 记录 JSON：<https://awesomerea.org/papers/paper-decfuzzer/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-decfuzzer/index.md)

## 研究范围与局限

测试使用规模较小的生成程序，而非真实二进制；重新编译失败与行为不一致分开记录。在作者的产物中，测试程序以 GCC 在 -O0 下编译为 32 位 x86 代码，Csmith 被限制为生成单个函数，且不含数组、结构体、联合体、指针或 long long 类型，因此优化代码和更丰富的数据类型不在该配置范围内。四种反编译器（IDA Pro、JEB3、RetDec 及 Radare2 的 r2ghidra 插件）均按 2020 年时的版本测试；错误数量与缺陷针对这些版本，而非当前版本。IDA Pro 与 JEB3 属商业软件，未包含在产物中，产物只配置了 RetDec 与 r2ghidra。

## 与本合集的关联

补充借助重新编译对反编译器正确性开展差分测试的研究，与 DecompileBench 等在真实函数上评估输出的反编译基准互补。

## 发表与复核说明

Crossref 与 ACM 页面给出两位作者的顺序、页码 475–487，以及本条目采用的小写标题；会议日程页与产物 README 将其写作“How Far We Have Come: Testing Decompilation Correctness of C Decompilers”。审阅期间 dl.acm.org 拒绝自动请求，也未找到论文正文的其他副本，因此上述方法与结果依据 ISSTA 2020 日程页上的摘要、Wayback Machine 存档的 ACM 页面（摘要、参考文献列表及“Artifacts Evaluated – Functional”徽章）以及产物本身。论文参考文献 [9] 链接 monkbai/DecFuzzer。所审阅的 2020-04-23 提交是 ISSTA’20 产物评审包：面向 Ubuntu 18.04，EMI 变异需要 MySQL，还需预编译的 RetDec v4.0 以及带 r2ghidra 的 Radare2，并在 Dropbox 上提供种子与结果数据的链接。仓库没有许可证文件，GitHub 也未识别出许可证。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/3395363.3397370>
2. <https://api.crossref.org/works/10.1145/3395363.3397370>
3. <https://web.archive.org/web/20251215175843/https://dl.acm.org/doi/abs/10.1145/3395363.3397370>
4. <https://conf.researchr.org/details/issta-2020/issta-2020-papers/26/How-Far-We-Have-Come-Testing-Decompilation-Correctness-of-C-Decompilers>
5. <https://github.com/monkbai/DecFuzzer/blob/8e109c12d499df0223430ae17f71aac3109bd1f6/README.md>
6. <https://github.com/monkbai/DecFuzzer/blob/8e109c12d499df0223430ae17f71aac3109bd1f6/src/Config.py>

## 关于此条目

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