如何使用.bin扩展名从C程序查看x86程序集 - Linux

时间:2013-07-26 20:15:09

标签: assembly x86 reverse-engineering

我正在尝试在Linux中查看已编译的C程序的x86程序集,但我没有源代码。这可以通过GCC完成,还是需要不同的工具?感谢。

2 个答案:

答案 0 :(得分:1)

GCC是一个编译器。您正在寻找的是一个反汇编程序。在linux上,您可以使用objdump(1)

示例(为了便于阅读而剪切了一些objdump输出):

$ cat example.c 
#include <stdio.h>

int main(void)
{
    printf("Hello, world!\n");
    return 0;
}
$ clang -Wall -Wextra -O2 -o example example.c
$ ./example 
Hello, world!
$ objdump -d example | grep -A10 '<main>'
0000000000400500 <main>:
  400500:   55                      push   %rbp
  400501:   48 89 e5                mov    %rsp,%rbp
  400504:   bf 0c 06 40 00          mov    $0x40060c,%edi
  400509:   e8 e2 fe ff ff          callq  4003f0 <puts@plt>
  40050e:   31 c0                   xor    %eax,%eax
  400510:   5d                      pop    %rbp
  400511:   c3                      retq   
  400512:   90                      nop
  400513:   90                      nop
  400514:   90                      nop

答案 1 :(得分:0)

objdump -d program&gt; dumped.txt