| |||||||||
A disassembler is a computer program which translates machine language to assembly language. It therefore performs the inverse operation to an assembler. However, the output of a disassembler is often designed for human-readability rather than suitability for input to an assembler (called disassembly).
Most debuggers include a disassembler, as does the objdump program of the GNU Binutils.
Generally, assembly language source code features the use of symbolic constants, and programmer "comments" - annotations which are ignored by the assembler but explain to another programmer what the program does and how it does it. These symbolic constants and comments are sometimes, but not always, removed from programs by the assembler. The loss of this information makes interpreting the dissassembled output more difficult than the annotated source code.
Disassemblers are a standard tool in reverse engineering computer software.
RosASM- 32 bit Assembler (The Bottom Up Assembler which is free and GPLed). Although this tool is basically a assembler. It contains also an very powerfull disassembler that is able to rebuild a huge variety of small apps. As the tool is in constantly development, disassemblement of medium or huge apps are currently under heavy work.