温馨提示×

如何学Linux反汇编

小樊
36
2026-08-20 06:49:20
栏目: 智能运维

学习 Linux 反汇编(Linux Reverse Engineering / Disassembly) 是一项系统性工程,通常涉及 汇编语言、二进制格式、系统调用、调试与逆向工具 等多个方向。下面我给你一个 从入门到进阶的系统学习路线,适合零基础或有一定 Linux 基础的人。


一、前置知识(必须)

1️⃣ Linux 基础

至少要会用 Linux 命令行:

  • 文件操作:ls, cat, xxd, file
  • 权限:chmod, sudo
  • 进程:ps, top, strace
  • 编译与调试:gcc, gdb

推荐系统:

  • Ubuntu / Debian
  • Kali Linux(工具多)

2️⃣ C 语言基础(非常重要)

反汇编本质是“看编译器生成的代码”,不懂 C 很难理解汇编。

重点掌握:

  • 变量、函数、指针
  • 栈与堆
  • 结构体
  • main 参数 argc argv

✅ 推荐:

  • 《C Primer Plus》
  • Learn-C.org

3️⃣ 计算机基础

  • CPU 基本工作原理
  • 内存模型(栈 / 堆 / 代码段)
  • 程序从源码到可执行文件的过程

二、汇编语言(核心)

1️⃣ x86 / x86-64 汇编(重点)

Linux 下最常见的是 x86-64

重点内容:

  • 寄存器
    rax rbx rcx rdx rsi rdi rsp rbp rip
    
  • 指令
    mov, push, pop, call, ret
    add, sub, cmp, jmp, je, jne
    
  • 函数调用与栈帧
  • 系统调用(syscall

✅ 推荐资料:

  • 《汇编语言(王爽)》(入门)
  • 《Intel 64 and IA-32 Architectures Software Developer Manual》
  • x86asm.net

2️⃣ AT&T vs Intel 语法

Linux 工具常用 AT&T 语法

movl %eax, %ebx

但你也得能看懂 Intel 语法

mov ebx, eax

三、Linux 二进制格式与工具

1️⃣ ELF 文件格式(重点)

理解 Linux 可执行文件结构:

  • ELF header
  • Sections / Segments
  • .text / .data / .bss
  • 符号表、重定位

推荐工具:

readelf -h a.out
objdump -d a.out

✅ 推荐:

  • 《ELF 文件格式详解》
  • Linux 下 man elf

2️⃣ 常用反汇编 / 调试工具

工具 用途
objdump 静态反汇编
gdb 动态调试
radare2 / r2 逆向分析
Ghidra 反编译
IDA Pro 商业逆向
strace / ltrace 系统调用分析

四、静态反汇编(入门实战)

示例:从 C 到汇编

int add(int a, int b) {
    return a + b;
}

编译:

gcc -O0 -fno-stack-protector -o test test.c

反汇编:

objdump -d test

学习方式:

  • 对比 C → 汇编
  • 看函数调用过程
  • 看参数如何传递

五、动态调试(非常重要)

使用 GDB

gdb ./test
(gdb) disas main
(gdb) break main
(gdb) run
(gdb) stepi

重点掌握:

  • 断点
  • 单步执行
  • 查看寄存器
  • 栈内容

✅ 推荐:

  • 《Debugging with GDB》
  • GEF / pwndbg 插件

六、进阶方向(按兴趣选择)

1️⃣ CTF 逆向工程

  • 破解验证逻辑
  • 去除反调试
  • 简单加壳分析

推荐平台:

  • BUUCTF
  • XCTF
  • pwnable.tw

2️⃣ 恶意软件分析

  • 病毒 / 木马 / rootkit
  • 行为分析
  • 脱壳

3️⃣ 二进制漏洞分析

  • 栈溢出
  • ROP
  • 格式化字符串

七、推荐学习路线(时间表)

第 1–2 个月

  • Linux 基础
  • C 语言 + 简单汇编
  • objdump + gdb

第 3–4 个月

  • ELF 文件结构
  • radare2 / Ghidra
  • 简单 CTF 逆向题

第 5–6 个月

  • 恶意样本分析
  • 脱壳
  • 自动化逆向脚本(Python)

八、推荐书籍(由浅入深)

  1. 《C Primer Plus》
  2. 《汇编语言(王爽)》
  3. 《逆向工程核心原理》
  4. 《Practical Reverse Engineering》
  5. 《The Art of Assembly Language》

九、你可以这样开始(今天就能做)

✅ 今晚 1 小时路线:

  1. 安装 Ubuntu
  2. 写一个 C 程序
  3. gcc -S test.c
  4. .s 文件
  5. objdump -d a.out

如果你愿意,我可以:

  • ✅ 给你 逐步拆解一个真实反汇编示例
  • ✅ 定制 30 天 Linux 反汇编学习计划
  • ✅ 针对 CTF / 安全 / 内核 / 嵌入式 做专项路线

你学反汇编的 主要目的 是什么?

0