← Latest papers
💻 computer science

Superset Decompilation

This paper introduces Provenance-Guided Superset Decompilation (PGSD), a modular and declarative framework implemented in the Manifold tool that improves decompilation quality and flexibility by deferring interpretation choices through parallel candidate tracking, achieving performance comparable to leading tools while reducing compiler errors.

Original authors: Chang Liu, Yihao Sun, Thomas Gilray, Kristopher Micinski

Published 2026-03-31
📖 5 min read🧠 Deep dive

Original authors: Chang Liu, Yihao Sun, Thomas Gilray, Kristopher Micinski

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

The Big Problem: The "Black Box" Translator

Imagine you find a mysterious, ancient book written in a language no one speaks anymore (a computer binary). You want to translate it back into a modern, readable story (source code like C).

For decades, the tools used to do this (like IDA Pro or Ghidra) have been like giant, single-person translators. They are powerful, but they are also rigid.

  • The Monolith Problem: Think of these tools as a massive, tangled ball of yarn. If you want to fix one small knot (a specific bug in the translation), you often have to untangle the whole ball, risking that you'll break something else.
  • The Premature Choice: Because the translator has to guess the meaning of a word immediately, they often have to pick one definition. But what if the word actually has two meanings? The old tools force a choice too early, throwing away the other possibility forever. If that choice was wrong, the whole story becomes nonsense.

The New Idea: The "Superset" Team

The authors of this paper, Chang Liu and his team, propose a new way to do this called Manifold. Instead of one giant translator, they built a team of specialized detectives working together.

They call their approach Superset Decompilation. Here is how it works, using a few analogies:

1. The "Superset" Approach: Keeping All Options Open

Imagine you are trying to figure out what a blurry photo shows.

  • Old Way: You look at the photo and immediately say, "It's definitely a cat." You write that down and move on. If it turns out to be a dog, you have to erase your whole work and start over.
  • Manifold's Way: You say, "It could be a cat, or it could be a dog, or maybe a fox." You write down all three possibilities at the same time. You keep every option alive as a "candidate." You don't commit to just one answer until you have gathered enough clues to be sure.

In technical terms, instead of forcing the computer to pick one interpretation of the code immediately, Manifold keeps a "forest" of all possible interpretations running in parallel.

2. The "Nano-Pass" Pipeline: A Factory Assembly Line

Old decompilers are like a single chef trying to chop, cook, season, and plate a meal all at once. If they mess up the chopping, the whole dish is ruined.

Manifold is like a modern factory assembly line with many small, specialized stations (called "passes").

  • Station 1: Looks at the raw machine code and says, "This looks like a math operation."
  • Station 2: Takes that result and says, "Ah, that math operation is probably a variable."
  • Station 3: Looks at the variable and says, "Since it's used in a loop, it's probably an integer."

Each station is tiny, independent, and does one specific job. If you want to add a new feature (like recognizing a new type of code), you just add a new station to the line. You don't have to rebuild the whole factory.

3. The "Shared Notebook" (Provenance)

How do these stations talk to each other without getting confused? They all write to a shared, magical notebook (a "relation store").

  • Every time a station adds a fact to the notebook, it also writes down where that fact came from (its "provenance").
  • If Station 3 says, "This is a cat," it writes, "I think it's a cat because Station 1 saw a tail and Station 2 saw whiskers."
  • If later, new evidence proves it's actually a dog, the system can trace back exactly which clues led to the "cat" mistake and fix just that part, without deleting the whole notebook.

4. The "Editor" (Disambiguation)

At the very end of the line, the team has a massive list of possibilities. How do they pick the final story?

  • They use a smart editor (the Clang compiler).
  • The editor tries to compile the story. If the story says "The cat barked," the editor says, "Error! Cats don't bark."
  • The system then goes back to the "Superset" list, picks the "dog" option instead, and tries again.
  • It keeps swapping options until the compiler says, "Perfect, no errors!"

Why Does This Matter?

The authors tested their tool, Manifold, against the industry giants (IDA Pro, Ghidra, etc.) using standard software tools (GNU Coreutils).

  • Quality: Manifold produced code that was just as good as the big tools in terms of accuracy.
  • Fewer Errors: Because it uses the compiler to check its work at the end, Manifold produced fewer syntax errors than the others.
  • Flexibility: Because it's built like a factory line, it's much easier to update. For example, if they wanted to support a new type of code, they just added one small "pass" without breaking the rest of the system.
  • Generalization: It worked well even when the code was compiled by different compilers (GCC vs. Clang) or with different settings, proving it understands the logic of the code, not just the quirks of one specific compiler.

The Bottom Line

Manifold changes reverse engineering from a "guess and hope" game into a systematic, modular process.

Instead of a single, rigid translator that forces you to make a guess too early, it's like a team of detectives who keep all their theories alive, check their work against a strict editor, and only present the final answer when they are sure it makes sense. It's faster to build, easier to fix, and produces cleaner results.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →