Abstract
Decompilation or reverse compilation is the process of translating low-level
machine-readable code into high-level human-readable code. The problem is nontrivial
due to the amount of information lost during compilation, but it can be
divided into several smaller problems which may be solved independently. This
report explores the feasibility of composing a decompilation pipeline from independent
components, and the potential of exposing those components to the end-user.
The components of the decompilation pipeline are conceptually grouped into three
modules. Firstly, the front-end translates a source language (e.g. x86 assembly)
into LLVM IR; a platform-independent low-level intermediate representation. Secondly,
the middle-end structures the LLVM IR by identifying high-level control flow
primitives (e.g. pre-test loops, 2-way conditionals). Lastly, the back-end translates
the structured LLVM IR into a high-level target programming language (e.g. Go).
The control flow analysis stage of the middle-end uses subgraph isomorphism search
algorithms to locate control flow primitives in CFGs, both of which are described
using Graphviz DOT files.
![Poster: Compositional Decompilation]()
more here........https://github.com/mewpaper/decompilation
Decompilation or reverse compilation is the process of translating low-level
machine-readable code into high-level human-readable code. The problem is nontrivial
due to the amount of information lost during compilation, but it can be
divided into several smaller problems which may be solved independently. This
report explores the feasibility of composing a decompilation pipeline from independent
components, and the potential of exposing those components to the end-user.
The components of the decompilation pipeline are conceptually grouped into three
modules. Firstly, the front-end translates a source language (e.g. x86 assembly)
into LLVM IR; a platform-independent low-level intermediate representation. Secondly,
the middle-end structures the LLVM IR by identifying high-level control flow
primitives (e.g. pre-test loops, 2-way conditionals). Lastly, the back-end translates
the structured LLVM IR into a high-level target programming language (e.g. Go).
The control flow analysis stage of the middle-end uses subgraph isomorphism search
algorithms to locate control flow primitives in CFGs, both of which are described
using Graphviz DOT files.

more here........https://github.com/mewpaper/decompilation