2015 · Conference paper
No More Gotos: Decompilation Using Pattern-Independent Control-Flow Structuring and Semantics-Preserving Transformations
DREAM is a decompiler whose control-flow structuring recovers loops, conditionals and switch statements from a recovered control-flow graph without matching predefined region patterns. For acyclic regions it computes each node's reaching condition, then refines the resulting conditions into if-then-else and switch constructs; cyclic regions are structured as loops whose type and continuation condition are inferred. Semantics-preserving transformations first rewrite cyclic regions with multiple entries or successors into single-entry, single-successor regions, and a Boolean variable keeps a repeated test equivalent when its operands may change. On GNU coreutils the authors report no goto statements, against thousands from Hex-Rays and Phoenix, and more compact code than Hex-Rays for 72.7% of functions and than Phoenix for 98.8% in one-to-one comparisons.
Scope and limitations
Correctness was measured on source-level control-flow graphs: the authors extracted CFGs of the preprocessed coreutils 8.22 source with joern, restructured the 1,530 functions joern parsed (208 of 1,738 failed to parse), recompiled and passed the coreutils tests. That experiment checks the structuring algorithm, not end-to-end decompilation of binaries, variable or type recovery. Structuredness and compactness were measured on the coreutils 8.17 binaries from the Phoenix evaluation, using functions decompiled by all three tools, with line counts as the compactness metric. Phoenix was unreleased, so its output came from its authors, and the 2014 Hex-Rays v2.0.0.140605 baseline is long superseded. The malware case studies cover one sample each from ZeusP2P, SpyEye and Cridex and compare against Hex-Rays only. The authors leave open whether more compact code is always easier to understand. The paper links no implementation, and these results do not describe current decompilers.
Why it fits this collection
Adds control-flow structuring, the decompiler stage that turns a recovered control-flow graph into structured high-level code, beneath the collection's neural and LLM-based decompilation research.
Publication and review details
- Venue
- NDSS 2015
- Status
- Conference paper
- Publication / posting date
- 2015 (exact date not verified)
- Date source
- Internet Society-deposited Crossref metadata supplies only publication year 2015; the publisher PDF separately identifies the 8–11 February 2015 symposium, which is not used to assert a publication month or day.
- DOI
- 10.14722/ndss.2015.23185
Crossref gives the title, the four-author order and year 2015 with no pages; the DOI resolves to the NDSS programme page, which links the 15-page PDF and slides. The PDF footer identifies NDSS ’15, 8–11 February 2015, San Diego, and carries the DOI. Its evaluation section names a supplemental document of decompiled malware listings hosted at the University of Bonn; it was not reviewed. The paper gives no code or project link, so both stay null, and nothing was downloaded or run apart from the paper.
Sources reviewed
Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.