温馨提示×

怎样查看centos反汇编结果

小樊
48
2026-09-27 08:22:04
栏目: 智能运维

在 CentOS 上查看“反汇编结果”,通常取决于你想反汇编什么:

  • 可执行文件 / 动态库(ELF)
  • 正在运行的进程
  • 内核模块
  • 某段内存或函数

下面按常见场景给你一个实用指南。


一、查看可执行文件 / 库的反汇编(最常用)

1️⃣ 使用 objdump(最基础)

objdump -d /bin/ls

常用参数:

objdump -d -M intel /bin/ls      # Intel 语法(推荐)
objdump -d -M att  /bin/ls       # AT&T 语法
objdump -S /bin/ls               # 源码+汇编(需带 -g 编译)
objdump -d -l /bin/ls            # 显示行号

查看某个函数:

objdump -d /bin/ls | grep -A 30 '<main>'

2️⃣ 使用 gdb(交互式反汇编)

gdb /bin/ls

在 gdb 中:

disassemble main
disassemble
disassemble 0x400520, 0x400560

Intel 语法:

set disassembly-flavor intel
disassemble main

3️⃣ 使用 readelf(查看结构,不直接反汇编)

readelf -h /bin/ls        # ELF 头
readelf -S /bin/ls        # 段表
readelf -s /bin/ls        # 符号表

二、查看运行中进程的反汇编

1️⃣ gdb 附加进程

ps aux | grep xxx
gdb -p <pid>
info proc mappings
disassemble <函数名>

三、查看内核模块反汇编

1️⃣ 反汇编 .ko 文件

objdump -d mydriver.ko

2️⃣ 查看内核函数(需 debug 内核)

crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
dis sys_open

四、使用更现代的反汇编工具(推荐)

✅ radare2(r2)

yum install radare2
r2 /bin/ls
aa
pdf @ main

✅ Ghidra(GUI,最强)

  • 从官网下载
  • 导入 ELF 文件
  • 自动反汇编 + 伪代码

五、查看汇编是 Intel 还是 AT&T?

CentOS 默认 gcc 是 AT&T 语法,但 objdump/gdb 可用:

-M intel
set disassembly-flavor intel

六、常见坑

  • 没符号:nm 看不到函数 → 用 strip 前的版本
  • 静态链接:反汇编代码很多
  • 优化编译:函数可能被 inline

如果你愿意,可以告诉我:

  • 你是要看 用户程序还是内核
  • 是想 学习汇编、调试 bug、安全分析
  • CentOS 版本(7 / 8 / Stream)

我可以直接给你针对性命令示例。

0 踩