在 CentOS(本质上就是 Linux,通常使用 GNU 工具链)中,“反汇编指令”一般指的是将可执行文件或目标文件中的机器码反汇编成汇编代码。常见支持的方式和工具如下:
objdump(最常用,属于 binutils)objdump -d file
-d:反汇编可执行段-D:反汇编所有段-S:源码+汇编混合(需要 -g 编译)-M intel:使用 Intel 语法(默认是 AT&T)objdump -d -M intel a.out
✅ CentOS 默认已安装(binutils)
gdb(调试时反汇编)gdb ./a.out
(gdb) disassemble main
或 Intel 语法:
(gdb) set disassembly-flavor intel
(gdb) disassemble main
其他:
(gdb) x/10i $pc # 反汇编当前指令
readelf(查看结构,不反汇编)readelf -h a.out # 文件头
readelf -S a.out # 段表
⚠️ 不直接反汇编,但常配合使用
nm / objdump -t(符号表)nm a.out
objdump -t a.out
objcopy(提取代码段)objcopy -O binary --only-section=.text a.out text.bin
ndisasm(NASM 提供)yum install nasm
ndisasm -b 64 file.bin
radare2(r2)yum install radare2
r2 ./a.out
[0x000000]> pdf
ghidra / IDA(图形化,非命令行)CentOS 上通常支持:
只要 binutils 编译时支持该架构即可。
objdump -d -M intel a.out
objdump -d a.out | grep -A 30 "<main>:"
gdb ./a.out
(gdb) break main
(gdb) run
(gdb) disassemble
如果你有:
我可以给你更精确的命令示例。