2024 · 会议论文
“len、index 或 count,就是别叫 v1”:基于迁移学习预测反编译输出中的变量名
“Len or index or count, anything but v1”: Predicting Variable Names in Decompilation Output with Transfer Learning
VarBERT 使用 BERT 式模型为 IDA Hex-Rays 与 Ghidra 的反编译输出建议变量名:模型先以来自 Debian 的 520 万个人工编写的 C 函数预训练,再以反编译代码微调;它还预测每个变量出自开发者,还是由反编译器引入。作者从 Gentoo 的 C 与 C++ 软件包构建 VarCorpus,在 O0 至 O3 下编译为 x86-64,并借助调试符号为反编译变量标注名称。在 O2 二进制的按函数划分上,IDA 与 Ghidra 的 Top-1 准确率分别为 54.43% 和 54.49%;在 IDA-O0 子集上为 50.70%,DIRE 与 DIRTY 分别为 35.94% 和 38.00%。
研究范围与局限
预测名称是模型学到的建议,以开发者原名称评分,并非恢复出的原始符号。在 O2 的按二进制划分上,Top-1 准确率降至 42.40%(IDA)与 40.49%(Ghidra);在 IDA-O0 的按二进制划分上,其领先 DIRTY 的幅度为 4.52 个百分点。与 DIRE、DIRTY 的比较仅覆盖 O0 下的 IDA,并因 DIRE 训练耗时过长而只使用约 40 万个函数(约占 VarCorpus 的 15%)。方法只能为反编译器恢复出的变量命名,标注则依赖 IDA 与 Ghidra 在匹配调试符号时保留变量。语料来自 Linux 发行版软件包,以 x86-64 为主,另有规模较小的 AArch64 O2 实验,可能不代表 Windows 或 macOS 可执行文件;去重仅删除完全重复项。用户研究由 27 名完成全部 13 组函数的学生参与。类型、数据结构与可重新编译的代码不在其范围内。
与本合集的关联
补充跨两种反编译器与四种优化级别的迁移学习变量名预测方法,并提供一个针对早期命名基准训练集与测试集重叠问题的数据集。
发表与复核详情
- 发表载体
- IEEE S&P 2024
- 发表状态
- 会议论文
- 出版/提交日期
- 2024 年(具体日期未核实)
- 日期依据
- IEEE 提交的 Crossref 元数据及论文集名称确认出版年份为 2024。其 published/纸质出版日期 2024-05-19 恰为 5 月 19—23 日会议的首日,且未能获取 IEEE Xplore 记录以确认另有出版日期,因此本条目不推定具体日期。
- DOI
- 10.1109/SP54263.2024.00152
Crossref 按此顺序列出 13 位作者,并给出 2024 IEEE Symposium on Security and Privacy 第 4069–4087 页;DOI 指向 IEEE Xplore 文档 10646727,审阅时未能获取该页面。标题沿用论文中的弯引号,Crossref 记录的是直引号。仓库链接的 19 页作者自存 PDF 没有 IEEE 页码,并附有程序委员会的元评审。未找到 arXiv 版本。论文使用 IDA Pro 7.6、Ghidra 10.4、PyTorch 1.9.0、Transformers 4.10.0 与 FairSeq 0.10.0。所审阅的 2025-12-17 仓库提交没有许可证文件,因此本条不认定开放许可;其 README 要求 Python 3.8+、供 Joern 使用的 Java 11 和供 Ghidra 10.4 使用的 Java 17+;requirements.txt 未固定 torch 与 transformers 版本,Dockerfile(Ubuntu 22.04、Python 3.11)会从 Dropbox 下载修改版 Joern;README 还通过 Dropbox 提供 HSC 与 VarCorpus 数据、Gentoo 二进制文件及 16 个微调模型。推理功能由独立的 binsync/varbert_api 库与 DAILA 插件提供。本次未下载数据或模型,也未运行代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://ieeexplore.ieee.org/document/10646727
- https://api.crossref.org/works/10.1109/SP54263.2024.00152
- https://www.atipriya.com/files/papers/varbert_oakland24.pdf
- README.md GitHub · sefcom/VarBERT · 修订 76f221a
- requirements.txt GitHub · sefcom/VarBERT · 修订 76f221a
- Dockerfile GitHub · sefcom/VarBERT · 修订 76f221a