在 CentOS 上进行“反汇编”时常见的报错及对应解决办法,主要取决于你用的是哪种工具(objdump / gdb / readelf / ndisasm / radare2 / IDA 等)以及报错内容。下面按常见场景给你一个排查清单。
objdump: command not found原因:未安装 binutils
解决
sudo yum install -y binutils
验证:
objdump -v
objdump: not in executable format原因
解决
file your_file
如果是脚本 / 压缩文件,不能用 objdump。
Invalid operation / unsupported architecture原因
解决(交叉反汇编)
sudo yum install -y binutils-aarch64-linux-gnu
aarch64-linux-gnu-objdump -d file
gdb: Cannot access memory at address原因
解决
gdb ./program
(gdb) start
(gdb) disassemble main
或关闭 ASLR:
set disable-randomization on
Permission denied原因
解决
chmod +x file
SELinux:
getenforce
sudo setenforce 0
No symbols / stripped现象
objdump -d file | head
只有地址,没有函数名
解决
objdump -d -M intel file
ndisasm: unable to open file原因
解决
ls -l file
objdump -d -M intel ./a.out
objdump -d -M intel ./a.out | grep -A 20 "<main>:"
gdb ./a.out
(gdb) disassemble /m main
请把具体报错信息贴出来,例如:
file xxx 输出)我可以直接告诉你是哪一步错了、该怎么改。