在 CentOS 上做反汇编(disassembly),选型主要取决于你要分析的对象(可执行文件格式、架构、是否带符号/调试信息)以及使用场景(静态分析、动态调试、内核/用户态等)。下面给你一个“按需选型”的清单。
uname -m # 架构:x86_64 / aarch64 / i686
file ./target # 文件类型:ELF? 32/64位? 动态/静态?
CentOS 默认是 x86_64 + ELF,以下以此为主。
适合:ELF 文件的静态反汇编
优点:系统自带、稳定
缺点:可读性一般
objdump -d ./a.out
objdump -d -M intel ./a.out # Intel 语法(推荐)
objdump -S ./a.out # 源码+汇编(需 -g)
✅ 选型建议:
适合:运行时反汇编、断点附近代码
优点:能看真实执行路径
缺点:交互式
gdb ./a.out
(gdb) disassemble main
(gdb) disassemble /m main # 混合源码
(gdb) layout asm
✅ 选型建议:
适合:深入静态 + 动态分析
优点:功能强、免费、脚本化
缺点:学习曲线陡
r2 ./a.out
[0x000000]> aaa
[0x000000]> pdf @ main
或新分支:
rizin ./a.out
✅ 选型建议:
适合:大型程序、函数识别、伪代码
优点:伪 C 代码、跨平台
缺点:Java、重
# CentOS 需装 JDK
./ghidraRun
✅ 选型建议:
适合:专业逆向
缺点:贵
✅ 选型建议:
objdump -d vmlinux
crash
perf annotate
| 场景 | 推荐工具 |
|---|---|
| 快速看汇编 | objdump |
| 调试时看代码 | gdb |
| 逆向分析 | radare2 / Ghidra |
| 伪代码 | Ghidra / IDA |
| 内核 | objdump + crash |
| 自动化 | objdump / r2pipe |
CentOS 默认是 AT&T 语法,但大多数人习惯 Intel:
objdump -d -M intel
set disassembly-flavor intel # gdb
我可以直接给你最合适的一条命令或工具链方案。