在 CentOS 上进行反汇编时出错,原因很多,得先定位是哪一步出错。下面按常见场景 + 解决方案给你一个排查清单,基本能覆盖 90% 的问题。
objdump 反汇编失败objdump -d test
常见错误:
objdump: test: file format not recognizedobjdump: can't disassemble for architecturefile test
正常应看到:
ELF 64-bit LSB executable, x86-64
uname -m
x86_64 → 用 objdump -daarch64 → 需要 aarch64-linux-gnu-objdumpyum install -y binutils
objdump -d a.out
没输出或报错
✅ 原因:
✅ 解决:
objdump -d -M intel a.out
readelf -S a.out
gdb 反汇编出错(gdb) disassemble main
报错:
No symbol table info available
✅ 解决方案:
gcc -g -o test test.c
file test
objdump -d 32bit_app
✅ 解决:
yum install -y glibc.i686 libgcc.i686
确认:
file 32bit_app
ndisasm 失败ndisasm -b 32 test
❌ 错误:
ndisasm: unable to open input file
✅ 解决:
yum install -y nasm
⚠️ 注意:ndisasm 只能反汇编 纯二进制文件,不能反汇编 ELF
radare2 / r2 报错r2 ./test
常见错误:
Cannot open fileNot a valid binary✅ 解决:
yum install -y radare2
file filename
readelf -h filename
readelf -S filename | grep debug
✅ 稳定方案
objdump -d -M intel ./program
✅ 进阶方案
gdb ./program
(gdb) disassemble main
✅ 逆向分析
radare2 ./program
aaa
pd 20
你可以直接贴出:
cat /etc/centos-release
我可以 精确告诉你为什么失败 + 逐条修复命令 ✅