温馨提示×

linux反汇编指令怎么操作

小樊
45
2026-07-21 14:20:40
栏目: 智能运维

在 Linux 下进行**反汇编(disassembly)**操作,常见场景有:

  • 反汇编 可执行文件 / 目标文件 / 共享库
  • 反汇编 内存中的代码段
  • 分析 Shellcode / 二进制数据

下面按常用工具 + 示例系统讲解。


一、使用 objdump(最常用)

1️⃣ 基本反汇编

objdump -d test
  • -d:反汇编可执行代码段
  • test:ELF 可执行文件

示例:

objdump -d ./a.out

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

objdump -S test

适合调试和分析 C 程序。


3️⃣ 反汇编指定段

objdump -d -j .text test

常见段:

  • .text:代码段
  • .init / .fini
  • .plt:动态链接跳转表

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

objdump -M intel -d test

5️⃣ 显示符号表

objdump -t test

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

1️⃣ 启动 gdb

gdb ./test

2️⃣ 反汇编函数

disas main

或:

disas 0x401000

3️⃣ Intel 语法

set disassembly-flavor intel
disas main

4️⃣ 反汇编当前执行位置

disas

5️⃣ 单步执行 + 汇编

ni        # 下一条指令
si        # 步入

三、使用 ndisasm(适合裸二进制)

适合分析 shellcode / boot / 无 ELF 文件

1️⃣ 安装

sudo apt install nasm

2️⃣ 反汇编二进制文件

ndisasm -b 32 shellcode.bin

或 64 位:

ndisasm -b 64 shellcode.bin

四、使用 radare2(逆向神器)

1️⃣ 安装

sudo apt install radare2

2️⃣ 打开文件

r2 ./test

3️⃣ 分析

aaa

4️⃣ 反汇编

pd 20        # 反汇编 20 条
pdf          # 反汇编当前函数

五、反汇编一段内存 / 原始数据

使用 objdump

echo -n -e "\x90\x90\x90" > code.bin
objdump -b binary -m i386 -M intel -D code.bin

六、常见语法对比

项目 AT&T(默认) Intel
操作数顺序 mov %eax,%ebx mov ebx,eax
寄存器 %eax eax
立即数 $5 5

七、典型实战示例

示例:反汇编一个 C 程序

int main() {
    return 0;
}

编译:

gcc -g -o test test.c

反汇编:

objdump -M intel -S test

八、推荐学习组合

新手

  • objdump + gdb

逆向 / CTF

  • radare2 / r2
  • Ghidra / IDA

Shellcode

  • ndisasm

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

  • ✅ 你要分析 ELF / 二进制 / 固件 / shellcode
  • ✅ 架构:x86 / x64 / ARM
  • ✅ 用途:学习 / 逆向 / 漏洞分析

我可以给你更精确的命令和实战案例

0