DDisasm: A Disassembler That Can Reassemble

DDisasm: Reversible (bi-directional) Disassembler

DDisasm is a fast and accurate disassembler that produces assembly code precise enough to be reassembled. It uses Datalog logic programming to analyze ELF and PE binaries across x86, ARM, and MIPS architectures, identifying code locations, symbols, and function boundaries. The output is converted to the GTIRB intermediate representation, enabling programmatic rewriting and reassembly via the GTIRB pretty printer.

DDisasm is a fast disassembler which is accurate enough for the resulting assembly code to be reassembled.
  1. BobbyTables2

    How does this actually work in practice?

    I suppose altering instruction count or size still dooms the executable to become non-functional?

    Or do all absolute & relative code & data references all get magically updated?

  2. aboardRat4

    HN does not seem to have discussed ddisasm enough.

    When I discovered it, I was amazed, astonished, stunned, thrilled, and in disbelief.

    It turns out that it actually works.

  3. sterlind

    ooh souffle!

    wonder how they avoid saturation explosion. that's doomed my souffle projects in the past. but obviously they've found a way to partition (maybe by block?)

More from this day

2026-08-08