objdump 是 GNU binutils 中的一款强大工具,常用于**反汇编(disassemble)**可执行文件、目标文件或库文件,查看底层机器指令。下面从基础到进阶给你一个实用指南。
objdump -d your_program
-d / --disassemble:对包含指令的段进行反汇编objdump -d -j .text your_program
-j:指定段(如 .text、.plt、.init)-g)objdump -S your_program
-S:交错显示源码和汇编objdump -t your_program
objdump -h your_program
objdump -f your_program
objdump -d -M intel your_program
AT&T 是默认语法,Intel 更易读。
objdump -d -x your_program
或
objdump -d --insn-width=16 your_program
objdump -d your_program | grep -A 30 '<main>:'
或用 nm 找地址:
nm your_program | grep main
objdump -d --start-address=0x401000 --stop-address=0x401050 your_program
.o)objdump -d main.o
.a)objdump -d libxxx.a
.ko)objdump -d -m arm module.ko
gcc -g -O0 test.c -o test
objdump -S -M intel test
objdump -b binary -m i386 -D shellcode.bin
-b binary:按原始二进制-m:指定架构-O2)会让汇编难以对应源码-m(如 arm、mips、riscv)如果你愿意,可以告诉我:
我可以给你更针对性的例子。