Paper Overview
- Field: ML
- Authors: Chang Liu, Edward Raff, Kristopher Micinski
- Published: 2026-09-04
- arXiv: 2609.05370
- A function may recompile and pass every shipped test yet diverge on other legitimate inputs.
- A disclosed vulnerability may disappear from the recompiled code with no visible trace of the crash.
- Across eight systems in nine configurations, candidates that passed all shipped tests still diverged from the original on the authors' corpus in 4.9% of cases overall, up to 13% on a single system.
- On 300 real GitHub library functions and 287 CVE-related functions, recompilability and behavioral fidelity can diverge: the strongest refined LLM raised Ghidra's build rate from 75% to 90%, while match rate dropped from 74% to 62%.
- Up to one in ten disclosed vulnerabilities exhibited crash-absence in the LLM output.
- Source-level analysis attributes divergence to introduced fields, types, callees, and guards that replace the visible unknowns left by traditional tools.
Background
Decompilation recovers high-level source from compiled machine code and underpins security tasks like vulnerability detection and malware analysis. Traditional decompilers (Ghidra, Hex-Rays) expose unresolvable content as visible placeholders and often emit pseudocode that will not compile or execute. LLM-based decompilers produce clean, idiomatic C, and are now judged almost entirely by recompilability and re-executability: whether output builds and passes shipped input/output tests.
Problem
These metrics can reward the wrong path:
No existing test suite catches these failures.
Decompile-Diverge
The authors propose Decompile-Diverge, a behavioral comparison oracle that requires no fixed or hand-written tests:
1. Synthesize a driver for each function. 2. Grow a fuzzing corpus from the reference implementation. 3. Rerun the decompiled code on the same inputs to detect behavioral divergence.
Findings
Takeaway
Recompilability alone is an insufficient — and potentially misleading — metric for LLM decompilers. Behavioral comparison against reference implementations, as in Decompile-Diverge, reveals silent semantic loss and vanished vulnerabilities that shipped tests miss.
---
*Auto-collected on 2026-09-09.*