在 Linux 下进行**反汇编(disassembly)**和二进制分析,通常需要以下工具和技能栈。下面按用途分类整理:
objdump(最常用)GNU Binutils 自带,适合 ELF 文件。
objdump -d ./a.out # 反汇编代码段
objdump -D ./a.out # 反汇编所有段
objdump -S ./a.out # 源码+汇编(需带 -g)
✅ 适合:快速查看汇编
❌ 不适合:复杂混淆、动态分析
gdb(调试 + 反汇编)gdb ./a.out
(gdb) disassemble main
(gdb) layout asm
✅ 可动态调试
✅ 支持断点、寄存器查看
ghidraRun
✅ 免费、强大
✅ 逆向工程首选之一
✅ 最专业
❌ 贵
命令行逆向框架,功能极强。
r2 ./a.out
> aaa
> pdf @ main
✅ 免费、脚本化
❌ 学习曲线陡
strace系统调用跟踪
strace ./a.out
ltrace库函数调用跟踪
ltrace ./a.out
gdb + pwndbg / gef增强版 GDB
gdb -q ./a.out
pwndbg> disassemble main
| 工具 | 用途 |
|---|---|
file |
判断文件类型 |
readelf |
查看 ELF 结构 |
strings |
提取字符串 |
nm |
查看符号表 |
hexdump / xxd |
十六进制查看 |
binwalk |
固件/打包分析 |
checksec |
安全机制(PIE/NX/Canary) |
objdump + gdb + strings
Ghidra / IDA + pwndbg + radare2
objdump + gdb + QEMU
| 场景 | 推荐工具 |
|---|---|
| 看函数汇编 | objdump / gdb |
| 还原逻辑 | Ghidra / IDA |
| 动态行为 | strace / ltrace / gdb |
| 恶意样本 | Ghidra + radare2 |
如果你愿意,我可以:
你想用在什么场景?