我正在尝试在 Linux 中查看已编译 C 程序的 x86 程序集,但我没有源代码。这可以用 GCC 完成,还是我需要不同的工具?谢谢。
问问题
162 次
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 回答