2025 · Conference paper
Unleashing the Power of Generative Model in Recovering Variable Names from Stripped Binary
GenNm suggests names for placeholder variables in decompiled code of stripped binaries by fine-tuning generative code models (CodeGemma-2B by default; CodeLlama-7B and a LoRA-tuned CodeLlama-34B are also tested). Queries add renamed caller code and callee signatures propagated along the call graph; a DPO-style symbol-preference optimization (SymPO) counters bias toward frequent training names, and a data-flow name-validation step chooses among candidates over iterative rounds. The authors report 5.6–11.4-point precision gains over VarBERT and ReSym on rebuilt DIRTY and VarCorpus datasets, and 22.8% precision on names unseen in training against 17.3% for the strongest baseline.
Scope and limitations
Predictions are scored against debug-symbol names by token matching with SymLM's word clusters and rules, plus a GPT-4 evaluator for context relevance and semantic accuracy; neither shows that outputs are the original identifiers, and overall split-by-binary precision is 35.8% (DIRTY) and 41.2% (VarCorpus). Precision is about 30% for projects unseen in training, and gains are smaller at -O2 and -O3. Ground truth comes from debug information in Linux binaries rebuilt from GitHub projects or Gentoo packages, with IDA Pro output in the paper's examples. GenNm needs each binary's call graph, which is why the DIRTY dataset was rebuilt; split-by-function VarCorpus results use a 15% binary sample, and the black-box GPT-3.5/GPT-4 comparison uses 1,000 sampled functions. It recovers variable names only, not types, function names or full decompiled code.
Why it fits this collection
Adds generative, call-graph-aware variable-name recovery with explicit treatment of name-frequency bias, extending the learned-naming line of work in this section.
Publication and review details
- Venue
- NDSS 2025
- Status
- Conference paper
- Publication / posting date
- 2025 (exact date not verified)
- Date source
- The official NDSS paper and the publisher’s Crossref deposit establish publication year 2025. The conference dates and the arXiv versions do not establish a publication day.
- First arXiv submission
- June 5, 2023
- arXiv
- 2306.02546
- Reviewed arXiv version
- v4
- DOI
- 10.14722/ndss.2025.240276
The record uses the NDSS title and the 11 authors in the NDSS paper's order, which match Crossref; Crossref gives year 2025 without pages. The arXiv record has carried three titles. v1 of 2023-06-05, 'LmPa: Improving Decompilation by Synergy of Large Language Model and Program Analysis', listed nine authors, without Ziyang Huang and Danning Xie; its title framed the work as improving decompilation in general, although its abstract already targeted variable-name recovery. v2 of 2024-05-01 was 'Leveraging Generative Models to Recover Variable Names from Stripped Binary'. v3 of 2024-07-20 and v4 of 2024-12-09, with the 11 NDSS authors, are 'Symbol Preference Aware Generative Models for Recovering Variable Names from Stripped Binary'; the NDSS paper defers implementation details to this extended version. The paper cites the artifact as Zenodo 10.5281/zenodo.14220042, a v1.0 code snapshot under concept DOI 10.5281/zenodo.14220041 as in the README badge. The reviewed 2026-01-29 repository commit is MIT-licensed, and Zenodo record 14287032 holds a 9.8 GB CC-BY-4.0 data package with intermediate results and model checkpoints. The README asks for Ubuntu 20.04+, Python 3.10 with vllm 0.5.3.post1, at least 24 GB of GPU memory for inference and 96 GB for training. No data or models were downloaded and no code or experiments were run.
Sources reviewed
Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.
Primary sources
- https://www.ndss-symposium.org/ndss-paper/unleashing-the-power-of-generative-model-in-recovering-variable-names-from-stripped-binary/
- https://www.ndss-symposium.org/wp-content/uploads/2025-276-paper.pdf
- https://api.crossref.org/works/10.14722/ndss.2025.240276
- https://arxiv.org/abs/2306.02546v1
- https://arxiv.org/abs/2306.02546v2
- https://arxiv.org/abs/2306.02546v4
- README.md GitHub · XZ-X/gennm-ndss-ae · Revision 9955139
- LICENSE GitHub · XZ-X/gennm-ndss-ae · Revision 9955139
- requirements.txt GitHub · XZ-X/gennm-ndss-ae · Revision 9955139
- https://zenodo.org/api/records/14220042
- https://zenodo.org/api/records/14287032