在 CentOS 上反汇编程序,通常取决于程序类型(ELF 可执行文件、共享库、内核模块等)和你想分析到什么程度(汇编指令、伪代码、符号信息等)。下面给你一套从入门到进阶的完整方案。
sudo yum install -y binutils gdb objdump readelf nasm
如果你要更强大的反汇编/逆向分析:
sudo yum install -y radare2
或者安装 IDA / Ghidra(手动)(见后文)
file your_program
示例输出:
ELF 64-bit LSB executable, x86-64
readelf -h your_program
readelf -S your_program
objdump(最常用)objdump -d your_program
objdump -d your_program | grep -A 20 "<main>:"
objdump -S your_program
⚠️ 前提:编译时带 -g
gcc -g -o test test.c
gdb(动态反汇编)适合调试 + 看运行态汇编
gdb ./your_program
常用命令:
disassemble main
disassemble
info registers
stepi
查看某地址:
x/10i 0x4005f0
radare2(强大、免费)r2 ./your_program
常用命令:
aaa # 自动分析
pd 20 # 反汇编 20 行
pdf # 反汇编当前函数
s main # 跳到 main
pdf
查看汇编:
pd 50
导出汇编:
pdf > main.asm
Ghidra(NSA 开源,最强)./ghidraRun
功能:
✅ 非常适合逆向工程
objdump -d libxxx.so
或:
nm libxxx.so
查看导出符号:
readelf -s libxxx.so
objdump -d your_module.ko
查看模块信息:
modinfo your_module.ko
objdump -d test | grep -A 30 "<main>:"
strace ./test
strings your_program
nop / 乱码?radare2 或 Ghidra✅ 完全可以用:
| 目的 | 推荐工具 |
|---|---|
| 快速看汇编 | objdump -d |
| 调试 + 汇编 | gdb |
| 逆向分析 | radare2 |
| 高级逆向 | Ghidra |
如果你愿意,可以告诉我:
我可以给你针对你这个程序的具体反汇编方案。