Book format: An electronic version of a printed book that can be read on a computer or handheld device designed specifically for this purpose.
Publisher: LAP LAMBERT Academic Publishing (15 Mar. 2016)
By: Robin Eklind (Author)
Decompilation or reverse compilation is the process of translating low-level machine-readable code into high-level human-readable code. The problem is non-trivial 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). Anyone with a passion for reverse engineering and a preference for the Unix workflow may find it interesting to explore the potential of a decompilation pipeline, composed of small, sharp tools. Open Access at decomp.org.