≡ Menu

Screenshot-1-440x300

  • General Machine Code to C Decompiler
  • Free Windows I64 target edition
  • Interactive Windows GUI

C Decompiler Features

Global Analysis

While function analysis alone provides information of the function’s control flow, only global program analysis can reveal the full details of the function’s interaction with the program.

Type Detection and Propagation

Data types are deduced from operations performed on the data and then propagated and synchronized globally.

Full Data Flow Analysis

Machine code has to work around CPU characteristics like the limited number of registers or operator location restrictions. Full data flow analysis facilitates the elimination of irrelevant data transfers and provides clear and short C code.

Machine Code to C

The low level features of C allow expressing most machine code functions in C. It is not relevant if the function was initially written in C or any other stack frame based language, including Assembler.

Interactive

Static decompilation has its limits and needs user guidance to provide missing context. Interactive manipulations, directly at the source allow you to guide the decompilation process. E.g. change a function’s ABI to restrict its return value locations or add missing destinations to a computed call.

No Compiler Detection

Global analysis provides the information to make compiler based assumptions obsolete. General compiler patterns are only employed as a last resort to resolve situations where information are missing, e.g. both, a called function’s code and its signature are not available.

Function Signatures Library

Detection of known functions from static compiler libraries shortens the decompile process and introduces additional type information. The build-in signature generator enables the user to extend the library with required signatures.

 

Showcase

Screenshoot-Intractive-977

Interactive

Selecting a C source code token highlights related token and shows the properties of the underlying object in a separate view. Tooltips provide quick information for the token under the mouse pointer.

Screenshot-AbiContextMenu

Context Menus

Context Menus are available in the Source View, Function Tree and the Properties View. They are tailored to the selected token and give quick access to the relevant control actions.

Screenshoot-Properties

Properties

All relevant details of a selected token are presented in the Properties View.

Screenshoot-Issues

Issue View

Relevant decompile events are presented by informative Issues and navigation and control actions.

Screenshoot-FunctionTree

Function Tree

The function tree for navigation and quick access to function control actions.

Screenshot-AsmMixIn

C/Assembler Mix

The underlying assembler code can be embedded in the generated C code.

News

0.7.11 Alpha Release: user-defined function declaration, …

The main feature of this release allows you (the advanced user) to modify the C Decompiler’s program model by providing declarations for functions at the boundary of the model: an example can be found further down, and a detailed feature description is here. We solved the problem of the GUI being slow. We added the [...]

0.7.10 Alpha Release: vector, optimized code, GUI, …

The address calculation code for vector access is: vectorBaseAdr + index * elementSize. The Decompiler detects vector access and combines it with other type information to translate most vectors correctly. [crayon-542d27b49a308735707602/] For static vectors of structures the C Compiler combines the vector’s address and the structure field offset to a single constant, i.e. the address [...]

0.7.6 Alpha Release

… makes your life easier. Drop you binary on the GUI to start a new session. Our C Decompiler has structure detection and merging for quite some time. It worked ok for smaller examples, but failed to create correct structures for the bigger Rogue example. The main structure detection deficits: Missed merging opportunities resulted in [...]