在 Linux 下,objdump 是 GNU binutils 提供的工具,常用于反汇编可执行文件、目标文件、共享库等。下面按常见使用场景说明。
objdump -d <文件>
示例:
objdump -d /bin/ls
-d:反汇编所有包含指令的段(如 .text)objdump -D file
-D:反汇编所有段(包括数据段,可能无意义)objdump -d -S file
-S:交错显示源代码 + 汇编-g:gcc -g -o test test.c
objdump -t file
或
objdump -T file # 动态符号表
objdump -f file
objdump -h file
objdump -r file
file ./program
readelf -h ./program
objdump -d ./program | grep -A 20 "<main>:"
或使用 nm 找地址:
nm ./program | grep main
objdump -d --start-address=0xXXXX --stop-address=0xYYYY ./program
objdump -d /bin/ls | less
或只反汇编 main:
objdump -d /bin/ls | awk '/<main>:/{flag=1} flag{print} /^$/{if(flag) exit}'
** stripped 文件**
objdump -d 看地址和指令架构匹配
arm-linux-gnueabi-objdump -d file
与 gdb 配合
gdb ./program
(gdb) disassemble main
如果你有具体目标(比如:反汇编内核、分析漏洞、看系统调用、ARM 程序),可以告诉我,我可以给你更针对性的命令。