All Topics  
Disassembler

 

   Email Print
   Bookmark   Link






 

Disassembler



 
 
A disassembler is a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 that translates machine language into assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
—the inverse operation to that of an assembler
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
. A disassembler differs from a decompiler
Decompiler

A decompiler is the name given to a computer program that performs the reverse operation to that of a compiler. That is, it translates a file containing information at a relatively low level of abstraction into a form having a higher level of abstraction ....
, which targets a high-level language rather than an assembly language. Disassembly, the output of a disassembler, is often formatted for human-readability rather than suitability for input to an assembler, making it principally a reverse-engineering
Reverse engineering

Reverse engineering is the process of discovering the technological principles of a device, object or system through analysis of its structure, function and operation....
 tool.

Assembly language source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 generally permits the use of symbolic constant
Variable

A variable is a symbol that stands for a value that may vary; the term usually occurs in opposition to constant, which is a symbol for a non-varying value, i.e....
s and programmer comment
Comment (computer programming)

In computer programming, a comment is a programming language construct used to embed programmer-readable annotations in the source code of a computer program....
s.






Discussion
Ask a question about 'Disassembler'
Start a new discussion about 'Disassembler'
Answer questions from other users
Full Discussion Forum



Encyclopedia


A disassembler is a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 that translates machine language into assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
—the inverse operation to that of an assembler
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
. A disassembler differs from a decompiler
Decompiler

A decompiler is the name given to a computer program that performs the reverse operation to that of a compiler. That is, it translates a file containing information at a relatively low level of abstraction into a form having a higher level of abstraction ....
, which targets a high-level language rather than an assembly language. Disassembly, the output of a disassembler, is often formatted for human-readability rather than suitability for input to an assembler, making it principally a reverse-engineering
Reverse engineering

Reverse engineering is the process of discovering the technological principles of a device, object or system through analysis of its structure, function and operation....
 tool.

Assembly language source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 generally permits the use of symbolic constant
Variable

A variable is a symbol that stands for a value that may vary; the term usually occurs in opposition to constant, which is a symbol for a non-varying value, i.e....
s and programmer comment
Comment (computer programming)

In computer programming, a comment is a programming language construct used to embed programmer-readable annotations in the source code of a computer program....
s. These are usually removed from the assembled machine code
Machine code

Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive programming language or as the lowest-level representation of a compiled and/or assembly language computer program....
 by the assembler. If so, a disassembler operating on the machine code would produce disassembly lacking these constants and comments; the disassembled output becomes more difficult for a human to interpret than the original annotated source code. Some disassemblers make use of the symbolic debugging information present in object files such as ELF. The Interactive Disassembler
Interactive Disassembler

The Interactive Disassembler, more commonly known as simply IDA, is a commercial disassembler widely used for reverse engineering. It supports a variety of executables for different Central processing units and operating systems....
 allow the human user to make up mnemonic symbols for values or regions of code in an interactive session: human insight applied to the disassembly process often parallels human creativity in the code writing process.

Disassembly is not an exact science: On CISC
Complex instruction set computer

A complex instruction set computer is a computer instruction set architecture in which each instruction can execute several low-level operations, such as a load from Memory , an arithmetic operator, and a memory , all in a single instruction....
 platforms with variable-width instructions, or in the presence of self-modifying code
Self-modifying code

In computer science, self-modifying code is Code that alters its own Instruction while it is Execution - usually to reduce the instruction path length and improve performance....
, it is possible for a single program to have two or more reasonable disassemblies. Determining which instructions would actually be encountered during a run of the program reduces
Reduction (complexity)

In computability theory and computational complexity theory, a reduction is a transformation of one computational problem into another problem....
 to the proven-unsolvable halting problem
Halting problem

In computability theory , the halting problem is a decision problem which can be stated as follows: given a description of a computer program and a finite input, decide whether the program finishes running or will run forever, given that input....
.

Examples of disassemblers

  • Any interactive debugger
    Debugger

    A debugger is a computer program that is used to test and debug other programs. The code to be examined might alternatively be running on an Instruction Set Simulator, a technique that allows great power in its ability to halt when specific conditions are encountered but which will typically be much slower than executing the code directly on...
     will include some way of viewing the disassembly of the program being debugged. Often, the same disassembly tool will be packaged as a standalone disassembler distributed along with the debugger. For example, objdump
    Objdump

    objdump is a program for displaying various information about object files. For instance, it can be used as a disassembler to view executable in assembly form....
    , part of GNU Binutils, is related to the interactive debugger gdb.
  • OllyDbg
    OllyDbg

    OllyDbg is a debugger that emphasizes binary code analysis, which is useful when source code is not available. It traces Processor registers, recognizes Function s, Application programming interface calls, switches, Table s, constant s and String s, as well as locates routines from object files and libraries....
     is a 32-bit assembler level analysing debugger
  • IDA
    Interactive Disassembler

    The Interactive Disassembler, more commonly known as simply IDA, is a commercial disassembler widely used for reverse engineering. It supports a variety of executables for different Central processing units and operating systems....
  • PEExplorer Win32 Disassembler.
  • ILDASM is a tool contained in the .NET Framework
    .NET Framework

    The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
     SDK. It can be used to disassemble PE files containing Common Intermediate Language
    Common Intermediate Language

    Common Intermediate Language is the lowest-level human-readable programming language in the Common Language Infrastructure and in the .NET Framework....
     code.
  • SIMON
    SIMON (Batch Interactive test/debug)

    SIMON was a proprietary test/debugging toolkit for interactively testing Batch programs designed to run on IBM's System 360/370/390 architecture....
    , a test/debugger/animator with integrated dis-assembler for Assembler, COBOL and PL/1


See also

  • Control flow graph
    Control flow graph

    File:Simplified Control Flowgraphs.jpgA control flow graph in computer science is a Group representation, using graph notation, of all paths that might be traversed through a computer program during its execution ....
  • Data-flow analysis
    Data-flow analysis

    Data-flow analysis is a technique for gathering information about the possible set of values calculated at various points in a computer program....
  • Decompiler
    Decompiler

    A decompiler is the name given to a computer program that performs the reverse operation to that of a compiler. That is, it translates a file containing information at a relatively low level of abstraction into a form having a higher level of abstraction ....

External links