温馨提示×

如何在Linux反汇编指令

小樊
41
2026-08-31 05:20:36
栏目: 智能运维

在 Linux 下进行反汇编(disassembly),通常取决于你面对的是可执行文件、目标文件、核心转储还是正在运行的进程。下面按最常用 → 进阶的顺序,系统介绍几种主流方法。


一、使用 objdump(最基础、最常用)

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

objdump -d ./a.out

常用选项:

objdump -M intel -d ./a.out
  • -M intel:使用 Intel 语法(默认是 AT&T)
  • -d:反汇编可执行代码段

2️⃣ 反汇编指定函数

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

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

objdump -S ./a.out

二、使用 gdb(调试 + 反汇编)

1️⃣ 启动 GDB

gdb ./a.out

2️⃣ 反汇编当前函数

disassemble

3️⃣ 反汇编指定函数

disassemble main

4️⃣ Intel 语法

set disassembly-flavor intel
disassemble main

5️⃣ 反汇编指定地址范围

disassemble 0x4005b6,0x4005d0

三、使用 ndisasm(专用于裸二进制文件)

适合:

  • shellcode
  • bootloader
  • 没有 ELF 头的二进制
ndisasm -b 32 shellcode.bin

或 64 位:

ndisasm -b 64 shellcode.bin

四、使用 radare2(进阶、逆向神器)

1️⃣ 打开程序

r2 ./a.out

2️⃣ 分析

aaa

3️⃣ 反汇编 main 函数

pdf @ main

4️⃣ 查看汇编(可视化)

V

五、使用 objdump 反汇编共享库

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

六、反汇编运行中的进程(高级)

使用 GDB 附加进程

gdb -p <pid>

然后:

disassemble

七、常见格式对照

场景 工具
ELF 可执行文件 objdump / gdb
二进制流 ndisasm
逆向分析 radare2 / Ghidra
调试过程 gdb
无符号程序 objdump / radare2

八、示例:完整反汇编流程

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

或:

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

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

  • ✅ 目标文件类型(ELF / bin / 固件)
  • ✅ 架构(x86 / x64 / ARM)
  • ✅ 是否带符号
  • ✅ 是否用于 CTF / 逆向 / 漏洞分析

我可以给你更精确的命令和实战技巧

0