温馨提示×

linux下如何看反汇编

小樊
39
2026-10-12 06:24:21
栏目: 智能运维

在 Linux 下查看反汇编(disassembly)有多种方式,取决于你面对的是可执行文件、进程、内核还是某个函数。下面按常见场景系统说明。


一、使用 objdump(最常用,静态反汇编)

适合分析 ELF 文件(可执行文件 / .o / .so)

1. 反汇编整个文件

objdump -d ./a.out

2. 反汇编并查看源码(如果有 -g 编译)

objdump -S ./a.out

3. 只反汇编某个函数

objdump -d ./a.out | grep -A 30 main

4. 查看符号表

objdump -t ./a.out

二、使用 gdb(动态 + 反汇编)

适合调试、查看运行时汇编

1. 启动 gdb

gdb ./a.out

2. 反汇编当前函数

disassemble

3. 反汇编指定函数

disassemble main

4. 反汇编指定地址范围

disassemble 0x400520, 0x400560

5. 显示源码 + 汇编

layout split

6. 查看某条指令

x/10i $pc

三、使用 nm(看符号,不反汇编)

nm ./a.out

四、使用 readelf(查看 ELF 结构)

readelf -h ./a.out     # 文件头
readelf -S ./a.out     # 段表
readelf -s ./a.out     # 符号

五、使用 llvm-objdump(LLVM 工具链)

llvm-objdump -d ./a.out

六、查看正在运行的进程(高级)

1. 使用 gdb 附加进程

gdb -p <pid>
(gdb) disassemble

2. 查看进程映射

cat /proc/<pid>/maps

七、内核态反汇编(进阶)

cat /proc/kallsyms
objdump -d vmlinux

八、推荐组合(实战)

场景 工具
看汇编 objdump -d
调试 gdb
看符号 nm / readelf
源码对照 objdump -S
运行时 gdb -p

如果你能告诉我:

  • 是 用户态还是内核态
  • 是 ELF / 二进制 / 脚本
  • 想分析 性能 / bug / 安全 / 学习

我可以给你更精确的命令示例。

0 踩