2020 · 期刊论文
基于增强控制流图的剥离符号二进制神经逆向工程
Neural reverse engineering of stripped binaries using augmented control flow graphs
Nero 为剥离符号的 x86-64 Linux 可执行文件中的过程预测名称,并不生成反编译代码。它通过静态分析重建调用点(包括导入的 API 名称),并沿控制流路径为参数补充具体值与抽象值。LSTM、Transformer 与图神经网络编码器处理由此得到的增强调用点图,再由解码器以子词序列生成名称。在 GNU 软件包测试集上,作者报告 Nero-GNN 的 F1 为 45.53,改造后的 DIRE 为 35.52,Debin 为 33.66。
研究范围与局限
评测使用来自纯 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。本条不对与当前工具版本的兼容性作任何判断。
与本合集的关联
补充由静态调用点分析驱动、面向剥离符号二进制的过程名称学习式预测,与本节的变量名和类型恢复论文互补。
发表与复核详情
- 发表载体
- 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
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,并因未能获取 ACM 托管的 PDF 而以其作为 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。本次未下载任何压缩包,也未运行代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/3428293
- https://web.archive.org/web/20250415223553/https://dl.acm.org/doi/10.1145/3428293
- https://api.crossref.org/works/10.1145/3428293
- https://arxiv.org/abs/1902.09122
- https://arxiv.org/pdf/1902.09122v4
- README.md GitHub · tech-srl/Nero · 修订 7dac9f5
- LICENSE GitHub · tech-srl/Nero · 修订 7dac9f5
- requirements.txt GitHub · tech-srl/Nero · 修订 7dac9f5
- https://zenodo.org/api/records/4099685
- https://zenodo.org/api/records/4095276