# 基于增强控制流图的剥离符号二进制神经逆向工程

> Nero 为剥离符号的 x86-64 Linux 可执行文件中的过程预测名称，并不生成反编译代码。它通过静态分析重建调用点（包括导入的 API 名称），并沿控制流路径为参数补充具体值与抽象值。LSTM、Transformer 与图神经网络编码器处理由此得到的增强调用点图，再由解码器以子词序列生成名称。在 GNU 软件包测试集上，作者报告 Nero-GNN 的 F1 为 45.53，改造后的 DIRE 为 35.52，Debin 为 33.66。

- 作者：Yaniv David; Uri Alon; Eran Yahav
- 原标题：Neural reverse engineering of stripped binaries using augmented control flow graphs
- 发表载体：Proceedings of the ACM on Programming Languages (OOPSLA 2020)
- 发表状态：期刊论文
- 出版／提交日期：2020 年 11 月 13 日
- 日期依据：ACM 提交的 Crossref 元数据将纸质与在线出版日期均记为 2020-11-13，ACM 文章页面的存档副本也显示同一出版日期。本条目不以 OOPSLA 会议日期或各 arXiv 版本日期代替。
- arXiv 首次提交：2019 年 2 月 25 日
- arXiv：1902.09122
- 已复核的 arXiv 版本：v4
- DOI：10.1145/3428293
- 来源复核于：2026-10-18
- 收录于：2026-10-19
- 原始论文：<https://dl.acm.org/doi/10.1145/3428293>
- PDF：<https://arxiv.org/pdf/1902.09122v4>
- 代码：<https://github.com/tech-srl/Nero/tree/7dac9f5748974ea8f39b5f29bb3c7d33f971077e>
- BibTeX：<https://awesomerea.org/papers/citations/paper-nero.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-nero/>
- 记录 JSON：<https://awesomerea.org/papers/paper-nero/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-nero/index.md)

## 研究范围与局限

评测使用来自纯 C 语言 GNU 软件包、构建为 x86-64 Linux 可执行文件的 67,246 个过程；在剔除 C++ 可执行文件、测试程序、静态链接软件包及同一软件包的重复版本后，按软件包划分为 60,403／2,034／4,809 个样本。标签取自剥离前的名称，F1 按名称子词计算，因此输出是模型学到的建议，而非恢复出的原始符号。模拟 API 名称混淆（将 .dynstr 节清零）会使 Nero-GNN 的 F1 降至 38.83；论文未处理加壳和更强的混淆。每个过程至少需要一个可静态检测的调用点，内联过程无法命名。数据生成依赖已授权的 IDA Pro（测试版本 6.95）识别过程边界并导出，另需 angr 与 LLVM 10；模型代码使用 TensorFlow 1.13.1。本条不对与当前工具版本的兼容性作任何判断。

## 与本合集的关联

补充由静态调用点分析驱动、面向剥离符号二进制的过程名称学习式预测，与本节的变量名和类型恢复论文互补。

## 发表与复核说明

Crossref 中的 ACM 元数据及 ACM 文章页面的互联网档案馆存档副本给出句首大写形式的标题、第 4 卷、OOPSLA 期、第 225 篇、第 1–28 页；arXiv 与论文 PDF 将标题写作“Neural Reverse Engineering of Stripped Binaries using Augmented Control Flow Graphs”。Crossref 记录该文章采用 CC BY-NC-SA 4.0 许可。arXiv 共有四个版本，从 2019-02-25 的 v1 到 2020-10-16 的 v4，并链接该 DOI；v4 作为 PDF 链接。README 称该仓库为 Nero-GNN 的官方实现，2021-05-10 提交采用 GPL-3.0。数据生成面向 Ubuntu 20，需要 Python 3.8、LLVM 10、angr 及已授权的 IDA Pro（IDAPython 2.7 脚本以 6.95 测试）；模型使用 Python 3.6 与 TensorFlow 1.13.1。README 提示，由于移植到 Python 3，重新生成的表示可能与 Zenodo 中的副本略有差异。Zenodo（概念 DOI 10.5281/zenodo.4081641）托管二进制文件、过程表示及训练好的 GNN 模型，记录标注为 CC-BY-4.0。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/3428293>
2. <https://web.archive.org/web/20250415223553/https://dl.acm.org/doi/10.1145/3428293>
3. <https://api.crossref.org/works/10.1145/3428293>
4. <https://arxiv.org/abs/1902.09122>
5. <https://arxiv.org/pdf/1902.09122v4>
6. <https://github.com/tech-srl/Nero/blob/7dac9f5748974ea8f39b5f29bb3c7d33f971077e/README.md>
7. <https://github.com/tech-srl/Nero/blob/7dac9f5748974ea8f39b5f29bb3c7d33f971077e/LICENSE>
8. <https://github.com/tech-srl/Nero/blob/7dac9f5748974ea8f39b5f29bb3c7d33f971077e/requirements.txt>
9. <https://zenodo.org/api/records/4099685>
10. <https://zenodo.org/api/records/4095276>

## 关于此条目

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