“Linux 反汇编指令报错”这个问题比较宽泛,通常不是某一条固定命令一定会报错,而是和你用的命令、参数、目标文件类型、架构、权限、工具版本有关。下面我按常见原因 + 对应解决办法来归纳,你可以对照看是哪一种。
Linux 下常用的反汇编工具:
objdump -dgdbndisasmobjdump -Dreadelf(不是反汇编,但常一起用)报错示例
objdump: file format not recognized
原因
解决
file 文件名
确认是否为:
.so报错示例
disassembly not supported for this architecture
原因
解决
uname -m
file 文件名
如果是 ARM:
objdump -d 文件 --target=arm-linux
错误示例
ndisasm a.out
会报错或输出乱码。
原因
ndisasm 只认纯二进制a.out 是 ELF 格式解决
objdump -d a.out
或提取纯二进制后再用 ndisasm。
-d 或参数写错错误示例
objdump a.out
只显示文件头,不是反汇编。
正确
objdump -d a.out
报错
Permission denied
解决
chmod +x 文件
sudo objdump -d 文件
不会直接报错,但:
objdump -d a.out
函数名全是 <main+0x0> 之类。
解决
-D 全反汇编报错
objdump: can't disassemble section
解决
objdump -D 文件
请告诉我以下信息,我可以直接定位:
file 文件名)uname -m)如果你愿意,可以直接把报错截图或文字发出来,我可以一行一行帮你分析。