在 Linux 下进行反汇编(disassembly),选什么指令主要取决于目标文件类型、架构、分析深度。下面给你一个实用选型指南,从“用什么工具”到“常用命令示例”都覆盖。
目标是什么?
.so).ko)CPU 架构?
分析目的?
| 工具 | 适合场景 | 推荐指数 |
|---|---|---|
objdump |
静态反汇编 ELF 文件 | ⭐⭐⭐⭐⭐ |
gdb |
调试 + 动态反汇编 | ⭐⭐⭐⭐⭐ |
ndisasm |
裸二进制文件 | ⭐⭐⭐ |
radare2 / r2 |
逆向分析 | ⭐⭐⭐⭐ |
IDA Pro |
专业逆向 | ⭐⭐⭐⭐⭐ |
Ghidra |
免费逆向 | ⭐⭐⭐⭐ |
llvm-objdump |
LLVM 工具链 | ⭐⭐⭐ |
objdump -d a.out
.text)objdump -d -j .text a.out
objdump -S a.out
objdump -M intel -d a.out
objdump -d libfoo.so
✅ 适合:ELF 可执行文件 / 库文件
gdb ./a.out
disassemble
disassemble main
set disassembly-flavor intel
disassemble main
disassemble 0x4005f0,0x400620
✅ 适合:断点调试、动态分析
ndisasm -b 32 shellcode.bin
或 64 位:
ndisasm -b 64 shellcode.bin
✅ 适合:shellcode / firmware / bootloader
r2 ./a.out
常用命令:
aaa # 自动分析
pd 20 # 反汇编 20 条
pdf # 反汇编当前函数
✅ 适合:逆向工程、漏洞分析
| CPU | 工具 | 选项 |
|---|---|---|
| x86 | objdump | -M intel |
| x86-64 | objdump | -M intel |
| ARM | objdump | -b elf32-littlearm |
| AArch64 | objdump | -M aarch64 |
示例:
objdump -d -M intel aarch64_binary
objdump -M intel -d a.out
gdb ./a.out
disassemble main
r2 ./a.out
aaa
pdf
静态分析用
objdump,动态调试用gdb,专业逆向用radare2 / IDA / Ghidra。
如果你愿意,可以告诉我:
我可以直接给你“最合适的一条命令”。