200A 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 has or combine features from two or more programs. Because an “assembler” converts assembly language into executable language, a “disassembler” is considered to be the exact opposite of an assembler.

 

How Disassemblers Work

Disassemblers work by automatically converting an executable language into an assembly language. The term “executable language” refers to a programming language in which all commands are completely written out and variables are specifically expressed. An “assembly language” refers to a programming language in which abbreviations, mnemonics, and hardware manufacturers are used to give a brief description of commands to be used in an executable language without specifying the exact command strings. Rather than manually shortening an executable language or lengthening an assembly language, programmers use disassemblers and assemblers, respectively, to automatically convert the text.

 

Applications

Disassemblers can be used for a number of programming applications. For example, a disassembler can be used when a programmer wants to modify an existing program. Likewise, a disassembler may be used when a programmer wishes to combine the features of two or more programs. Additionally, a disassembler can be used when a programmer wishes to create a similar program to one he/she already has or simply wishes to learn how a program works.

 

Advantages

Disassemblers are advantageous because they allow programmers to automatically convert programs from an executable language into an assembly language. While both executable languages and assembly languages can be read by a programmer, an executable language may contain variables that are based on specific hardware variables, while an assembly language for the same program would provide “empty” variables that would only be filled when placed on a specific machine or in a specific environment.

Popular Disassemblers

Disassembler License Platform(s)
IDA Pro (Interactive Disassembler) Commercial Windows
GNU binutils objdump GPL Unix, Windows
PEDasm: a Symbolic disassembler for Win32 GPL Windows
Win32 Program Disassembler Freeware Windows, Linux
Proview (PVDasm) Freeware Windows