在 Linux 下,objdump 是 GNU Binutils 提供的工具,常用于反汇编可执行文件、目标文件或库文件。下面按常见用法逐步说明。
objdump -d program
-d:反汇编所有包含指令的段(如 .text)program:ELF 可执行文件或 .o 文件示例:
objdump -d ./a.out
objdump -d -j .text program
只反汇编 .text 段(代码段)。
objdump -d -S program
-S:交错显示源代码 + 汇编-ggcc -g -o program program.c
objdump -t program
或
objdump -T program # 动态符号
objdump -f program
objdump -h program
objdump -d -r program
-r:显示重定位信息(对 .o 文件很有用)objdump -d program
(自动识别架构)
objdump -d -m arm program
objdump -d -m mips program
file program
stripped:无符号信息,反汇编只能看到地址nm program
readelf -h program
strip 过可以:
objdump -d libc.so
objdump:静态分析gdb:运行时调试、动态反汇编objdump -d -S -M intel ./a.out
-M intel:使用 Intel 语法(默认是 AT&T)如果你有具体程序类型(如内核模块、strip 后的二进制、ARM 固件),我可以给你更针对性的反汇编命令。