Questions about analysing compiled programs to recover source code, or as part of reverse engineering to discover how they work.
A decompiler is a computer program that performs the reverse operation to a compiler. It translates program code from its computer readable form into a human-readable source form, that ideally could be re-compiled to produce the original program. It is possible to decompile by hand as well, or to manually improve the output of a program.
Decompilers do not re-create the original source code and can vary widely in how easy their output is to read. Decompilers are an important tool in reverse engineering, error correction and enhancing of programs for which the source code is unavailable. They are also used for less legitimate purposes such as extracting business secrets and conducting software exploits.