0

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

4

2 回答 2

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
于 2013-07-26T20:16:39.267 回答
0

objdump -d 程序 > dumped.txt

于 2013-07-26T20:18:50.747 回答