Search code examples
c++linuxassemblyexecutabledisassembly

How to disassemble a binary executable in Linux to get the assembly code?


I was told to use a disassembler. Does gcc have anything built in? What is the easiest way to do this?


Solution

  • I don't think gcc has a flag for it, since it's primarily a compiler, but another of the GNU development tools does. objdump takes a -d/--disassemble flag:

    $ objdump -d /path/to/binary
    

    The disassembly looks like this:

    080483b4 <main>:
     80483b4:   8d 4c 24 04             lea    0x4(%esp),%ecx
     80483b8:   83 e4 f0                and    $0xfffffff0,%esp
     80483bb:   ff 71 fc                pushl  -0x4(%ecx)
     80483be:   55                      push   %ebp
     80483bf:   89 e5                   mov    %esp,%ebp
     80483c1:   51                      push   %ecx
     80483c2:   b8 00 00 00 00          mov    $0x0,%eax
     80483c7:   59                      pop    %ecx
     80483c8:   5d                      pop    %ebp
     80483c9:   8d 61 fc                lea    -0x4(%ecx),%esp
     80483cc:   c3                      ret    
     80483cd:   90                      nop
     80483ce:   90                      nop
     80483cf:   90                      nop