温馨提示×

centos反汇编指令报错怎么办

小樊
48
2026-09-09 05:07:43
栏目: 智能运维

在 CentOS 上进行“反汇编”时常见的报错及对应解决办法,主要取决于你用的是哪种工具(objdump / gdb / readelf / ndisasm / radare2 / IDA 等)以及报错内容。下面按常见场景给你一个排查清单。


一、常见报错与解决办法

1️⃣ objdump: command not found

原因:未安装 binutils

解决

sudo yum install -y binutils

验证:

objdump -v

2️⃣ objdump: not in executable format

原因

  • 文件不是 ELF 文件
  • 文件损坏
  • 架构不匹配(如 ARM 文件在 x86 上反汇编)

解决

file your_file

如果是脚本 / 压缩文件,不能用 objdump。


3️⃣ Invalid operation / unsupported architecture

原因

  • 交叉架构(如 aarch64)
  • objdump 版本太老

解决(交叉反汇编)

sudo yum install -y binutils-aarch64-linux-gnu
aarch64-linux-gnu-objdump -d file

4️⃣ gdb: Cannot access memory at address

原因

  • 程序没运行
  • 反汇编地址非法
  • PIE 程序地址随机化

解决

gdb ./program
(gdb) start
(gdb) disassemble main

或关闭 ASLR:

set disable-randomization on

5️⃣ Permission denied

原因

  • 没有执行权限
  • SELinux 限制

解决

chmod +x file

SELinux:

getenforce
sudo setenforce 0

6️⃣ No symbols / stripped

现象

objdump -d file | head

只有地址,没有函数名

解决

  • 使用调试版本
  • 或加参数:
objdump -d -M intel file

7️⃣ ndisasm: unable to open file

原因

  • 文件不存在
  • 路径错误

解决

ls -l file

二、推荐的反汇编命令(CentOS)

ELF 程序

objdump -d -M intel ./a.out

函数级

objdump -d -M intel ./a.out | grep -A 20 "<main>:"

GDB

gdb ./a.out
(gdb) disassemble /m main

三、如果你愿意,我可以更精准帮你

请把具体报错信息贴出来,例如:

  • 使用的命令
  • 完整报错
  • 文件类型(file xxx 输出)

我可以直接告诉你是哪一步错了、该怎么改

0