在 CentOS(以及大多数 Linux 发行版)中,反汇编(disassembly)通常使用 binutils、GDB、objdump、radare2、IDA、Ghidra 等工具。下面按常用程度和使用场景来介绍。
objdump 属于 binutils,CentOS 默认一般已安装。
objdump -d ./a.out
objdump -d -j .text ./a.out
objdump -S ./a.out
objdump -t ./a.out
objdump -M intel -d ./a.out
适合调试时查看汇编代码。
gdb ./a.out
disassemble
disassemble main
disassemble 0x4005f0,0x400620
set disassembly-flavor intel
disassemble main
ndisasm 来自 nasm。
yum install nasm
ndisasm -b 32 file.bin
ndisasm -b 64 file.bin
✅ 常用于:
虽然不能直接反汇编,但常用于分析结构。
readelf -h ./a.out # ELF 头
readelf -S ./a.out # 段表
readelf -s ./a.out # 符号表
yum install radare2
r2 ./a.out
pd 20 # 反汇编 20 条
pdf # 反汇编当前函数
| 工具 | 用途 | 是否默认安装 |
|---|---|---|
| objdump | 静态反汇编 | ✅ |
| gdb | 动态调试 + 反汇编 | ✅ |
| ndisasm | 裸二进制 | ❌(需 nasm) |
| readelf | ELF 分析 | ✅ |
| radare2 | 逆向分析 | ❌ |
| Ghidra | 高级逆向 | ❌ |
objdump -M intel -d ./a.out | less
gdb ./a.out
(gdb) set disassembly-flavor intel
(gdb) disassemble main
如果你愿意,我可以:
只要告诉我你的使用场景即可。