# Decomperson：人类如何反编译以及我们能从中学到什么

> 将人工逆向工程重新表述为“完美反编译”：编写源码，使其在原始工具链与编译选项下编译后，能完全复现目标函数的二进制代码。作者开发了 Decomperson——一个对每次提交进行编译、反汇编、测试与差异比对的网页编辑器，并在 2020 年 11 月举办的 24 小时 Jeopardy 式竞赛 Decompetition 中使用；竞赛包含 23 个未剥离符号、以 C、C++、Go、Rust 与 Swift 编写的挑战二进制。150 余名参与者提交了 35,000 多份代码，其中 300 多份达到完美反编译；除一个挑战外，其余均被完美反编译。作者分析记录下的编辑历史，以描述人类的反编译过程。

- 作者：Kevin Burk; Fabio Pagani; Christopher Kruegel; Giovanni Vigna
- 原标题：Decomperson: How Humans Decompile and What We Can Learn From It
- 发表载体：USENIX Security 2022
- 发表状态：会议论文
- 出版／提交日期：2022 年 8 月
- 日期依据：采用 USENIX 官方 BibTeX（month = aug）及第 31 届 USENIX Security Symposium（2022 年 8 月 10–12 日）最终版 PDF 封面所载的出版月份，不推定具体出版日。
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始论文：<https://www.usenix.org/conference/usenixsecurity22/presentation/burk>
- PDF：<https://www.usenix.org/system/files/sec22-burk.pdf>
- 代码：<https://github.com/decompetition/server>
- BibTeX：<https://awesomerea.org/papers/citations/paper-decomperson.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-decomperson/>
- 记录 JSON：<https://awesomerea.org/papers/paper-decomperson/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-decomperson/index.md)

## 研究范围与局限

参与者是自愿参加 2020 年单次竞赛的选手，多数以单人队伍参赛（队伍人数不限），赛后问卷仅有 12% 的注册者填写。挑战为组织者编写的 23 个小型竞赛二进制，未剥离符号但不含调试信息，且 Decomperson 假定已知原始工具链与编译选项。完美反编译要求与编译器输出一致；作者指出，这并非传统的逆向工程任务，无法反映筛查大型二进制等技能，还可能包含与编译器特性“较劲”所花的时间。网页编辑器使选手离开了惯用工具，可能影响计时。选手可以粘贴自动反编译器的输出；约 20% 的 C 函数尝试与工具输出相似，主要来自 Hex-Rays、Ghidra 或 Binary Ninja。该研究观察的是人类，并未评估自动反编译器或智能体。

## 与本合集的关联

补充可通过程序分析的大规模人类反编译记录，与比较人类逆向工程人员和大语言模型、智能体的研究互补。

## 发表与复核说明

未核实论文 DOI 或 arXiv 标识符；本条目采用 USENIX Security 报告页面与 sec22-burk.pdf 配对规则。USENIX BibTeX 给出第 31 届 USENIX Security Symposium、页码 2765–2782、出版方 USENIX Association 及八月份。论文说明该研究经 IRB 审查被认定为第 3 类豁免，且未使用个人身份信息。其“产物”一节链接 challenges-2020、server、disassembler 与 data 仓库及一个 Docker Hub 构建镜像。代码链接采用 Decomperson 服务端，审阅提交为 0d381d4（2026-04-13），采用 Apache-2.0 许可证，其版权行于当日补全；challenges 与 disassembler 仓库则在同日首次加入 Apache-2.0 许可证文件。匿名化提交数据位于 decompetition/data 的 4b339e5（2022-06-02），是基于 2020-12-10 快照的 PostgreSQL 转储，并附基于 Docker 的 serve.sh；该仓库未声明许可证。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity22/presentation/burk>
2. <https://www.usenix.org/system/files/sec22-burk.pdf>
3. <https://github.com/decompetition/server/blob/0d381d414a256c016149d878d5a19d006d097a86/README.md>
4. <https://github.com/decompetition/server/blob/0d381d414a256c016149d878d5a19d006d097a86/LICENSE.txt>
5. <https://github.com/decompetition/data/blob/4b339e5a0f847510175605e7f7cd9b953b55b094/README.md>

## 关于此条目

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