Decompiler
A decompiler is a program which takes executable code and produces source code from it.
A compiler creates executable code from source code; A decompiler attempts to reverse this process.
A decompiler is a specialized version of a disassembler. While a disassembler converts executable code to assembly language, a decompiler attempts to go further and convert the executable code to source code in a higher level language, such as C or C++.
Decompilers
Boomerang
The goal is the Boomerang project is an attempt to develop a real decompiler for machine code programs through the open source community. A decompiler takes as input an executable file, and attempts to create a high level, compilable, possibly even maintainable source file that does the same thing. It is therefore the opposite of a compiler, which takes a source file and makes an executable. However, a general decompiler does not attempt to reverse every action of the decompiler, rather it transforms the input program repeatedly until the result is high level source code. It therefore won't recreate the original source file; probably nothing like it. It does not matter if the executable file has symbols or not, or was compiled from any particular language. (However, declarative languages like ML are not considered.)
The intent is to create a retargetable decompiler (i.e. one that can decompile different types of machine code files with modest effort, e.g. X86-windows, sparc-solaris, etc). It was also intended to be highly modular, so that different parts of the decompiler can be replaced with experimental modules. It was intended to eventually become interactive, a la IDA Pro, because some things (not just variable names and comments, though these are obviously very important) require expert intervention. Whether the interactivity belongs in the decompiler or in a separate tool remains unclear.
By transforming the semantics of individual instructions, and using powerful techniques such as Static Single Assignment dataflow analysis, Boomerang should be (largely) independent of the exact behavior of the compiler that happened to be used. Optimization should not affect the results. Hence, the goal is a general decompiler.
Comments (3)
Leave a Reply
- The “Hope” of a Decompiler that would Convert an Executable Program into C/C++ Code
This FAQ answer is an excerpt from SNIPPETS by Bob Stout. Don't hold your breath. Think about it… For a decompiler to work properly, either 1) every compiler would have to generate substantially identical code, even with full optimization turned on, or 2) it would have to recognize the individual output of every compiler's code [...]...
- Java Decompiler
A Java decompiler is a special type of decompiler which takes a class file as input and produces Java source code as output. Java Decompilers Jode JODE is a Java package containing a decompiler and an optimizer for java. This package is freely available under the GNU GPL. The bytecode package and the core decompiler [...]...
- Java Source Code
Java source code is code that you write in the Java programming language. Java source code is converted to Java bytecode by the Java compiler. Java source code files usually have the .java extension. Sun recommends that Java source code files be no longer than two thousand lines. Larger source code files should be split [...]...
- Java Class
A Java class is a group of Java methods and variables. Each Java source code file can contain one public class. The name of this public class must match the name of the Java source code file. If the public class is called “ballistics,” then the filename would be “ballistics.java.” Example Java Class class Ammunition [...]...
- Disassembler
A disassembler is a software that is able to convert an executable language into an assembly language, allowing users to view the individual commands that make a program work. A disassembler is ideal for programming applications because it can be useful when a programmer is attempting to create a similar program to one he/she already [...]...





What is it called when you take Windows 7 code and put it back into to the language it was written with?
Ie: take winload.exe to c/c++/C#?
John
Decompiling or reverse engineering.
how to decompile the binary file into c code