在 Linux 下做反汇编(disassembly),常用工具有 objdump、gdb、radare2、objdump、ndisasm 等。下面按最常用场景给你讲清楚「指令 + 参数怎么用」。
objdump -d test
-d:反汇编 .text 段(代码段)objdump -D test
-D:反汇编所有段(包括数据段)objdump -S test
⚠️ 需要编译时加 -g:
gcc -g -o test test.c
objdump -d -M intel test
常用参数组合:
objdump -d -M intel -S test
objdump -d test | grep -A 20 "<main>:"
gdb ./test
disassemble
disassemble main
set disassembly-flavor intel
disassemble main
disassemble 0x400500, 0x400600
适合 shellcode / boot / 裸机
ndisasm -b 32 shellcode.bin
-b 32:32 位-b 64:64 位r2 ./test
进入后:
aa # 分析
pdf # 反汇编当前函数
pdf @ main
s main # 跳到 main
| 工具 | 参数 | 作用 |
|---|---|---|
| objdump | -d |
反汇编代码段 |
| objdump | -D |
全段反汇编 |
| objdump | -S |
源码+汇编 |
| objdump | -M intel |
Intel 语法 |
| gdb | disassemble |
反汇编 |
| gdb | set disassembly-flavor intel |
Intel 语法 |
| ndisasm | -b 64 |
64 位二进制 |
AT&T:
mov %rax, %rbx
Intel:
mov rbx, rax
如果你愿意,可以告诉我:
我可以直接给你针对性命令模板。