2020 · Conference paper

Egalito: Layout-Agnostic Binary Recompilation

Egalito statically recompiles stripped x86-64 and ARM64 binaries, using the metadata that position-independent executables and libraries carry to recover a complete disassembly in which every code and data cross-reference becomes an explicit link. Its layout-agnostic intermediate representation, EIR, stays close to machine code, so regenerated output is predictable, while a higher-level view supports analysis; data-flow analyses infer jump tables, which have no metadata. Because the original layout imposes no constraints, tools can move or rewrite code freely; the authors build nine, including continuous code randomization in which Egalito transforms itself, a retpoline defense, and software emulation of Intel CET. They report recovering the compiler's jump tables in 866 of 867 executables and libraries from 172 Debian packages, all tests passing in 90 of 149 transformed packages, and a 1.7% speedup on SPEC CPU 2006.

Scope and limitations

Egalito requires position-independent code for sufficient metadata; non-PIC inputs are outside the method except where full relocations are supplied, as in the authors' Fuchsia kernel experiment. Jump-table recovery uses data-flow analysis and an adjacency heuristic, so disassembly is not guaranteed to be complete; the one failure in the Debian study was heavily nested jump tables. The authors list obfuscated code, inline assembly that embeds data in code symbols, C++ exceptions, symbol versioning, and Go or V8 binaries among unsupported cases. Package test failures are partly attributed to these features. RISC-V support was incomplete at publication. The columbia/egalito main branch has had no commits since June 2020, so no current maintenance is implied.

Why it fits this collection

Adds static whole-binary recompilation, which regenerates a working program from a recovered low-level IR without the original layout, complementing the collection's decompilation and lifting research.

Publication and review details

Venue
ASPLOS 2020
Status
Conference paper
Publication / posting date
March 9, 2020
Date source
ACM-deposited Crossref print-publication date; the online-publication date is recorded separately in metadata notes. The March 16–20 conference dates are not used.
DOI
10.1145/3373376.3378470

ACM metadata records print publication on 2020-03-09 and online publication on 2020-03-13, pages 133–147, with the eight-author order shown here; Crossref splits the title into “Egalito” and the subtitle “Layout-Agnostic Binary Recompilation”. The Columbia-hosted PDF is the 15-page ACM-formatted version with the DOI. The paper says Egalito is released under GPL v3 at egalito.org, which did not respond over HTTP or HTTPS on 2026-10-19, so project_url stays null. The reviewed columbia/egalito commit (2020-06-01; the repository was last pushed 2023-08-01) is GPL-3.0; its README describes x86_64 and aarch64 support with experimental RISC-V and builds with make and g++ on Debian-style systems. Nothing was built or run.

Sources reviewed

Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.

Report an outdated entry Suggest a translation fix

Primary sources

  1. https://dl.acm.org/doi/10.1145/3373376.3378470
  2. https://api.crossref.org/works/10.1145/3373376.3378470
  3. https://www.cs.columbia.edu/~junfeng/papers/egalito-asplos20.pdf
  4. README GitHub · columbia/egalito · Revision c5bccb4
  5. LICENSE GitHub · columbia/egalito · Revision c5bccb4