When LLM Decompilers Recompile More and Preserve Less
LLM decompilers can produce compilable C that passes shipped tests while changing behavior or hiding crashes. Validate reconstructed code against the original with shared fuzzed inputs.
Decompile-Diverge found that outputs passing every shipped test still differed from original binaries on **4.9% overall**, reaching **13% for one system**. Its oracle generates a driver, grows inputs from the reference, and compares both implementations on the same corpus.
For security work, treat recompilation and fixture tests as entry checks, not semantic proof. Differential fuzzing should gate agent-generated decompilation before using it for vulnerability analysis or downstream automation.
Decompile-Diverge found that outputs passing every shipped test still differed from original binaries on **4.9% overall**, reaching **13% for one system**. Its oracle generates a driver, grows inputs from the reference, and compares both implementations on the same corpus. For security work, treat recompilation and fixture tests as entry checks, not semantic proof. Differential fuzzing should gate agent-generated decompilation before using it for vulnerability analysis or downstream automation. The strongest refinement LLM raised Ghidra's build rate from **75% to 90%** while matched behavior fell from **74% to 62%**. Up to one tenth of CVE-grounded functions lost the disclosed crash, but results cover the evaluated corpora and configurations.
This adds semantic equivalence as an independent acceptance gate for decompilation agents: recompilation and shipped tests can improve while fidelity to the binary worsens. It reinforces prior evidence that green functional checks miss consequential constraints, and supplies a reference-based oracle—shared fuzzed inputs and differential execution—suited to behavior drift and lost security-relevant crashes.