温馨提示×

怎么查linux反汇编指令

小樊
46
2026-07-21 13:00:36
栏目: 智能运维

在 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 test.c

二、使用 gdb 查看反汇编(调试时最常用)

1️⃣ 启动 gdb

gdb ./a.out

2️⃣ 查看函数反汇编

disassemble main

3️⃣ 查看当前执行位置的反汇编

disassemble

4️⃣ 显示汇编 + 源码

layout asm
layout src

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

set disassembly-flavor intel
disassemble main

三、使用 objdump 指定语法格式

Intel 语法

objdump -M intel -d a.out

AT&T 语法(默认)

objdump -d a.out

四、反汇编共享库(.so)

objdump -d libxxx.so

或查看符号:

nm libxxx.so

五、使用 readelf 查看汇编相关结构(辅助)

查看段信息:

readelf -S a.out

查看符号表:

readelf -s a.out

六、运行时反汇编(高级)

1️⃣ 使用 perf

perf record ./a.out
perf annotate

2️⃣ 使用 radare2(逆向分析神器)

r2 ./a.out
pd 20        # 反汇编 20 条指令

七、常见示例对比

C 代码

int main() {
    return 0;
}

编译

gcc -g -o test test.c

反汇编

objdump -M intel -d test | grep -A 10 main

八、常见误区

❌ 直接反汇编没有符号的可执行文件 → 只能看到地址
✅ 加上 -g 或保留符号表
❌ 用 cat 查看二进制 → 不可读
✅ 用 objdump / gdb / radare2


九、总结速查表

需求 命令
静态反汇编 objdump -d
调试时反汇编 gdb → disassemble
Intel 语法 -M intel
源码+汇编 objdump -S
逆向分析 radare2

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

  • 你是 学习汇编 / 调试 / 逆向 / exploit
  • 用的是 x86 / x64 / ARM
  • 哪一步卡住了

我可以直接给你定制示例。

0