选择反汇编指令(Disassembly)主要取决于你分析的目标文件类型、CPU架构以及使用的工具。没有“唯一正确”的指令,只有“最适合当前场景”的指令。
下面按场景 → 推荐指令/工具 → 示例的方式给你一个实用指南。
在选反汇编方式前,先确认:
目标是什么?
CPU 架构是什么?
你用的是哪种工具?
objdumpgdbIDAGhidraradare2 / rizincapstone(编程)objdump -d test.elf
.text)objdump -d -j .text test.elf
objdump -S test.elf
objdump -b binary -m arm -M armv7 test.bin
✅ 适合:ELF / PE / 裸 bin
❌ 不适合:逻辑复杂、控制流分析
disassemble
disassemble main
disassemble 0x400500,0x400600
set disassembly-flavor intel
✅ 适合:运行时分析、漏洞调试
❌ 不适合:静态结构分析
Space:切换图形/文本Tab:反编译(伪 C)✅ 适合:逆向工程、固件、恶意代码
❌ 不适合:命令行自动化
rizin test.bin
aaa # 自动分析
pdf # 反汇编当前函数
pd 20 # 反汇编 20 条指令
rizin -a arm -b 32 test.bin
✅ 适合:自动化、脚本化、CTF
❌ 不适合:新手入门
⚠️ 这是最容易选错的地方。
objdump -b binary -m arm -M force-thumb -EL firmware.bin
| 架构 | 指令 |
|---|---|
| x86 | -m i386 |
| x64 | -m i386:x86-64 |
| ARM | -m arm |
| Thumb | -M force-thumb |
| MIPS | -m mips |
✔ 正确反汇编的特征:
invalidmain、printf、memcpy 等熟悉符号❌ 选错的表现:
ud2、illegal| 场景 | 推荐 |
|---|---|
| Linux 程序 | objdump -d |
| 调试漏洞 | gdb disassemble |
| 固件/无头文件 | objdump -b binary |
| 逆向工程 | IDA / Ghidra |
| 自动化分析 | radare2 / rizin |
| 写脚本 | Capstone |
如果你愿意,可以直接告诉我:
我可以给你一条完全可用的反汇编命令。