在 Linux 下进行反汇编,常用的是 objdump、gdb、radare2、IDA 等工具。下面按“最常见 → 进阶”给你一个清晰清单。
objdump -d test
.text)objdump -d -j .text test
objdump -S test
objdump -d -M intel test
-M intel:使用 Intel 语法(默认是 AT&T)
objdump -d test | grep -A 20 "<main>:"
gdb ./test
disassemble
disassemble main
set disassembly-flavor intel
disassemble main
disassemble 0x4005f0
file test
readelf -S test
r2 ./test
常用命令:
aaa # 自动分析
s main # 跳到 main
pdf # 反汇编函数
ndisasm -b 32 file.bin
from capstone import *
md = Cs(CS_ARCH_X86, CS_MODE_64)
for i in md.disasm(code, 0x1000):
print(f"{i.address:#x}:\t{i.mnemonic}\t{i.op_str}")
| 工具 | 常用指令 | 说明 |
|---|---|---|
| objdump | -d |
反汇编 |
| objdump | -S |
源码+汇编 |
| objdump | -M intel |
Intel 语法 |
| gdb | disassemble |
调试反汇编 |
| radare2 | pdf |
函数反汇编 |
| readelf | -S |
查看段 |
AT&T(默认):
movl %eax, %ebx
Intel(推荐):
mov ebx, eax
如果你愿意,可以告诉我:
我可以给你更精确的命令和实战示例。