温馨提示×

怎样查看Linux反汇编

小樊
45
2026-08-05 04:07:44
栏目: 智能运维

在 Linux 下查看反汇编(disassembly)通常取决于你想分析的是可执行文件、共享库、core dump,还是正在运行的进程。下面按常见场景给你一个系统性的说明。


一、常用工具概览

工具 用途
objdump 最常用的静态反汇编工具
gdb 动态调试 + 反汇编
nm 查看符号表
readelf 查看 ELF 结构
radare2 / r2 高级逆向分析
IDA Pro / Ghidra 图形化逆向(非 Linux 自带)

二、使用 objdump 查看反汇编(最常用)

1️⃣ 反汇编整个可执行文件

objdump -d ./a.out

2️⃣ 反汇编指定函数

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

3️⃣ 显示源码 + 汇编(如果有调试信息)

objdump -S ./a.out

⚠️ 需要编译时加 -g

gcc -g -o a.out a.c

4️⃣ Intel 语法(默认是 AT&T)

objdump -M intel -d ./a.out

三、使用 gdb 进行反汇编(动态分析)

1️⃣ 启动 gdb

gdb ./a.out

2️⃣ 查看函数反汇编

disassemble main

或简写:

disas main

3️⃣ Intel 语法

set disassembly-flavor intel
disas main

4️⃣ 查看某段地址

disas 0x400500,0x400550

四、查看运行中的程序反汇编

1️⃣ 附加到进程

gdb -p <pid>

2️⃣ 查看当前执行位置

info registers
where
disas

五、查看共享库反汇编

objdump -d /lib/x86_64-linux-gnu/libc.so.6

或:

gdb /bin/ls
(gdb) disas printf

六、查看符号表(辅助分析)

nm ./a.out

或:

readelf -s ./a.out

七、使用 radare2(进阶)

r2 ./a.out

常用命令:

aaa        # 自动分析
pdf @ main # 反汇编 main 函数

八、常见示例(完整流程)

gcc -g -m32 -o test test.c
objdump -M intel -d test | less

或:

gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disas main

九、反汇编 vs 反编译

类型 说明
反汇编 汇编代码(asm)
反编译 近似 C 代码(如 Ghidra)

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

  • ✅ 分析 什么程序(ELF / 二进制 / 脚本)
  • ✅ 想要 静态还是动态
  • ✅ 是否涉及 漏洞 / 逆向 / 内核 / 驱动

我可以给你更针对性的命令和实战示例。

0