# “len、index 或 count，就是别叫 v1”：基于迁移学习预测反编译输出中的变量名

> 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%。

- 作者：Kuntal Kumar Pal; Ati Priya Bajaj; Pratyay Banerjee; Audrey Dutcher; Mutsumi Nakamura; Zion Leonahenahe Basque; Himanshu Gupta; Saurabh Arjun Sawant; Ujjwala Anantheswaran; Yan Shoshitaishvili; Adam Doupé; Chitta Baral; Ruoyu Wang
- 原标题：“Len or index or count, anything but v1”: Predicting Variable Names in Decompilation Output with Transfer Learning
- 发表载体：IEEE S&P 2024
- 发表状态：会议论文
- 出版／提交日期：2024 年（具体日期未核实）
- 日期依据：IEEE 提交的 Crossref 元数据及论文集名称确认出版年份为 2024。其 published／纸质出版日期 2024-05-19 恰为 5 月 19—23 日会议的首日，且未能获取 IEEE Xplore 记录以确认另有出版日期，因此本条目不推定具体日期。
- DOI：10.1109/SP54263.2024.00152
- 来源复核于：2026-10-18
- 收录于：2026-10-19
- 原始论文：<https://ieeexplore.ieee.org/document/10646727>
- PDF：<https://www.atipriya.com/files/papers/varbert_oakland24.pdf>
- 代码：<https://github.com/sefcom/VarBERT/tree/76f221a5e0af43a36169818cbbfd6e8dd3c98cdc>
- BibTeX：<https://awesomerea.org/papers/citations/paper-varbert.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-varbert/>
- 记录 JSON：<https://awesomerea.org/papers/paper-varbert/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-varbert/index.md)

## 研究范围与局限

预测名称是模型学到的建议，以开发者原名称评分，并非恢复出的原始符号。在 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 组函数的学生参与。类型、数据结构与可重新编译的代码不在其范围内。

## 与本合集的关联

补充跨两种反编译器与四种优化级别的迁移学习变量名预测方法，并提供一个针对早期命名基准训练集与测试集重叠问题的数据集。

## 发表与复核说明

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 插件提供。

## 一手来源

1. <https://ieeexplore.ieee.org/document/10646727>
2. <https://api.crossref.org/works/10.1109/SP54263.2024.00152>
3. <https://www.atipriya.com/files/papers/varbert_oakland24.pdf>
4. <https://github.com/sefcom/VarBERT/blob/76f221a5e0af43a36169818cbbfd6e8dd3c98cdc/README.md>
5. <https://github.com/sefcom/VarBERT/blob/76f221a5e0af43a36169818cbbfd6e8dd3c98cdc/requirements.txt>
6. <https://github.com/sefcom/VarBERT/blob/76f221a5e0af43a36169818cbbfd6e8dd3c98cdc/Dockerfile>

## 关于此条目

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