Decompiler
A decompiler is a computer program that translates machine language or sometimes object code (the output from a compiler) into a high level language (source code). By comparison, a disassembler translates machine language into assembly language.
Decompilation is a technique for the recovery of lost source code. It is also useful in some cases for computer security, interoperability, error correction, and more (see WhyDecompilation (http://www.program-transformation.org/twiki/bin/view/Transform/WhyDecompilation)). Decompilation of Java bytecode programs is relatively easy, and there are many successful Java decompilers. Decompilation of binary programs is much harder; as a result there are very few binary decompilers, and they tend to fail (so far) on all but the smallest programs.
Discussion of legal and ethical issues of decompilation can be found in the article on reverse engineering.
See also
External links
- The Boomerang Decompiler (http://boomerang.sourceforge.net/) is an attempt at a retargetable binary decompiler. It is presently capapable of decompiling small binary files (pentium and SPARC) to C. Boomerang is available under a BSD-like license, and can be run on various Unix and Windows platforms.
- REC - Reverse Engineering Compiler (http://www.backerstreet.com/rec/rec.htm) by Giampiero Caprino. REC is a portable reverse engineering compiler, or decompiler. It reads an executable file, and attempts to produce a C-like representation of the code and data used to build the executable file. While source code is not available, binary distributions of REC for several platforms can be downloaded for free.
- The DeCompilation Wiki (http://www.program-transformation.org/twiki/bin/view/Transform/DeCompilation) discusses various aspects of decompilation: history, research, pattern matching, the general approach, Java decompilers (and why they work so much better than binary decompilers), and so on.
- Lutz Roeder's .NET Reflector (http://www.aisto.com/roeder/dotnet/) is a widely adopted tool that merges class browser and decompiler for the purpose of navigation and understanding of code libraries.
- Citations from CiteSeer (http://citeseer.org/cs?q=decompiler)
de:Decompiler et:Dekompilaator nl:Decompiler