2024 · Preprint
STRIDE: Simple Type Recognition In Decompiled Executables
STRIDE predicts the names and types of variables in decompiler output without a neural model. From training decompilation with known labels, it builds a database mapping the token sequences (N-grams, with N from 2 to 60) immediately left and right of each variable occurrence to the five most frequent names or types. Variable placeholders are canonicalized, and address-like tokens and large constants are bucketed so that N-grams can match. At prediction time it looks up the longest matching N-gram on each side of every occurrence, scores the returned labels by how specific the match is, and sums the scores across the function. The prototype is about 1,000 lines of Python and runs on a CPU. On DIRT functions not seen in training, the authors report 66.4% retyping accuracy, against 52.3% for DIRTY with beam search, and 56.2% renaming accuracy, against 51.3% reported for VarBERT. Across 16 VarCorpus splits, renaming accuracy is higher than VarBERT on 11 and 1.55 points higher on average. Prediction takes 8.2 ms per function on a CPU, against 43.7 ms for VarBERT on an NVIDIA L4 GPU.
Scope and limitations
An arXiv preprint with no stated venue; this record makes no claim of peer review. STRIDE classifies by exact N-gram matches, so its predictions depend on token sequences seen in the training data: it cannot fuzzy-match or predict a name or type absent from training, and a model trained on one decompiler's token format is not expected to transfer to another. Results are reported on decompiler output from the DIRT, DIRE and VarCorpus benchmark datasets. DIRT pairs Hex-Rays output for GCC -O0 builds of GitHub projects with DWARF-derived labels, the older DIRE dataset was prepared similarly, and VarCorpus covers Gentoo packages decompiled with Hex-Rays and Ghidra at -O0 to -O3. Retyping is evaluated only on DIRT, and only x86 C/C++ code is covered. Accuracy is exact match, so near-synonyms count as errors. About 60% of DIRT test functions also appear in training, where STRIDE reaches about 99% by memorization; the not-in-train figures are the more representative ones. DIRT keeps function and global names, and removing them lowers renaming accuracy by a few points. Several baseline numbers are copied from earlier publications rather than rerun. The authors' README expects poor results on custom closed-source binaries with structures absent from training. The reviewed repository is a research prototype with no decompiler plugin or trained databases.
Why it fits this collection
Adds a non-neural, sequence-matching baseline for decompiled variable name and type recovery, complementing the transformer-based DIRTY and VarBERT records it compares against.
Publication and review details
- Venue
- arXiv
- Status
- Preprint
- Publication / posting date
- July 3, 2024
- Date source
- arXiv v1 submission on 2024-07-03, the only version at review time. No later venue publication was found, so no publication date beyond the preprint is asserted.
- First arXiv submission
- July 3, 2024
- arXiv
- 2407.02733
- Reviewed arXiv version
- v1
Reviewed arXiv v1 (2024-07-03), the only version at review time; the abstract page lists no comment or journal reference, and the PDF names Carnegie Mellon University and the CMU Software Engineering Institute as affiliations. A Crossref bibliographic search and an OpenAlex search found only the arXiv preprint; DBLP's search API returned a bot check and could not be consulted. The abstract links hgarrereyn/STRIDE, reviewed at its latest commit ebaab25 (2024-07-04): MIT license, copyright 2024 Harrison Green. The README documents converters for the DIRE, DIRT and VarCorpus datasets, which are downloaded separately from Google Drive, Amazon S3 and Dropbox; the repository ships no trained N-gram databases or requirements file, and its FAQ says no decompiler plugin exists yet. The paper says the N-gram database takes a few gigabytes of memory. The repository also appears in the automated scan index, whose record is unchanged. No datasets 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://arxiv.org/abs/2407.02733
- https://arxiv.org/pdf/2407.02733v1
- README.md GitHub · hgarrereyn/STRIDE · Revision ebaab25
- LICENSE GitHub · hgarrereyn/STRIDE · Revision ebaab25
- stride GitHub · hgarrereyn/STRIDE · Revision ebaab25