在 Linux 下进行反汇编(disassembly)和逆向分析,常用工具分为 命令行工具、GUI 工具、调试器、专用逆向平台 几类。下面按使用场景给你一个清晰清单。
objdump(系统自带)适合快速看汇编代码。
objdump -d ./a.out # 反汇编所有可执行段
objdump -d -M intel ./a.out # Intel 语法
✅ 优点:系统自带、简单
❌ 缺点:无控制流分析、不适合复杂逆向
gdb(调试 + 反汇编)gdb ./a.out
(gdb) disassemble main
(gdb) layout asm
✅ 适合动态调试 + 反汇编
❌ 静态分析能力弱
radare2 / r2非常强的开源逆向框架。
r2 ./a.out
[0x000000]> aaa
[0x000000]> pdf @ main
✅ 免费、功能强、脚本化
❌ 学习曲线陡
nm / readelf(辅助)nm ./a.out
readelf -S ./a.out
用于看符号表、段信息,不直接反汇编但很有用。
./ghidraRun
✅ 免费、强大、适合 serious RE
✅ 对 ELF 支持很好
✅ 最强反汇编 + 伪代码
❌ 贵
✅ 比 IDA 轻量
❌ 收费
strace / ltracestrace ./a.out
ltrace ./a.out
看系统调用 / 库调用,不是反汇编但很有用。
valgrindvalgrrind --tool=callgrind ./a.out
用于执行流分析。
capstone / pyelftools适合写自己的分析工具。
| 场景 | 推荐 |
|---|---|
| 快速看汇编 | objdump / gdb |
| 学习逆向 | Ghidra |
| 专业逆向 | IDA Pro / Binary Ninja |
| 命令行高手 | radare2 |
| 动态调试 | gdb + strace |
如果你愿意,可以告诉我:
我可以直接给你一套 最小可用工具链 + 示例命令。