温馨提示×

centos反汇编报错怎排查

小樊
38
2026-09-27 08:35:06
栏目: 智能运维

在 CentOS 上进行反汇编(如 objdump、gdb、readelf、radare2 等)时报错,常见原因和排查思路如下,按由浅入深的方式给你一套通用排错流程。


一、先确认「报的是什么错」

先把完整报错信息贴出来最有用,例如:

  • objdump: can't read symbol table
  • File format not recognized
  • Segmentation fault
  • No such file or directory
  • Permission denied

不同报错方向完全不同。


二、最常见原因 & 对应排查

1️⃣ 文件不是可执行/可反汇编文件

报错示例

objdump: app: File format not recognized

排查

file app

正常应为:

ELF 64-bit LSB executable, x86-64, ...

✅ 解决:

  • 确认是 ELF 文件
  • 不是脚本、文本、压缩包
  • 若是 .o 也能反汇编,但方式不同

2️⃣ 架构不匹配(x86 / ARM / aarch64)

报错示例

objdump: architecture not recognized

排查

uname -m
file app

✅ 解决:

  • x86_64 → objdump -d
  • ARM → objdump -d -m arm
  • aarch64 → aarch64-linux-gnu-objdump

3️⃣ 没装 binutils / gdb

报错示例

command not found: objdump

排查

which objdump
rpm -q binutils

✅ 安装:

sudo yum install -y binutils
sudo yum install -y gdb

4️⃣ 32 位程序在 64 位系统

报错示例

objdump: can't disassemble for architecture i386

✅ 解决:

sudo yum install -y glibc.i686 libgcc.i686
objdump -d -m i386 app

5️⃣ 文件被 strip(无符号)

报错示例

objdump: can't read symbol table

排查

file app

看到 stripped 是正常的。

✅ 反汇编仍然可以:

objdump -d app

只是没有函数名。


6️⃣ 使用 gdb 反汇编报错

报错示例

(gdb) disassemble
No function contains program counter

✅ 解决:

(gdb) info functions
(gdb) disassemble main

或:

(gdb) x/20i $pc

7️⃣ 权限问题

Permission denied

✅ 解决:

chmod +x app
sudo !!

8️⃣ 文件损坏 / 不是完整 ELF

排查

readelf -h app

报错说明文件已损坏或被截断。


三、常用反汇编命令(CentOS)

objdump -d app
objdump -d -M intel app
readelf -S app
gdb app
(gdb) disassemble main

四、建议你这样贴问题(方便精准定位)

如果你愿意,可以直接发:

  1. 使用的命令
  2. 完整报错
  3. file app 输出
  4. uname -a
  5. CentOS 版本(cat /etc/redhat-release)

我可以一步到位帮你定位。

0 踩