在 CentOS 上进行“反汇编失败”的原因有很多,通常需要结合具体现象、命令和报错信息来判断。下面我按常见原因 → 对应表现 → 解决办法来系统说明,你可以对照看看是哪一种。
表现:
objdump: File format not recognizedfile 显示是脚本、文本、压缩包原因:
.sh、.py、.txt解决:
file yourfile
确认是:
ELF 64-bit LSB executable
表现:
objdump: can't disassemble.byte原因:
解决:
objdump -d -m arm yourfile
objdump -d -m aarch64 yourfile
表现:
command not found: objdumpgdb 不能 disas解决:
yum install -y binutils
yum install -y gdb
表现:
objdump -d 成功但看不到函数名nm 无输出原因:
-s 或 strip解决:
-d 仍可反汇编yum install -y debuginfo-install <package>
表现:
objdump 无法解析vmlinux 很大但反汇编异常原因:
解决:
objdump -d vmlinux
# 或
crash
表现:
解决:
getenforce
sudo chmod +x file
# 基本反汇编
objdump -d ./a.out
# 带源码(需 -g 编译)
objdump -S ./a.out
# GDB 反汇编
gdb ./a.out
(gdb) disas main
# 反汇编指定函数
objdump -d ./a.out | grep -A 30 "<main>:"
你可以直接贴出:
file 文件名 的输出cat /etc/redhat-release)我可以直接告诉你为什么失败 + 怎么改。
你现在是卡在哪一种情况?