学习 Linux 反汇编(Linux Reverse Engineering / Disassembly) 是一项系统性工程,通常涉及 汇编语言、二进制格式、系统调用、调试与逆向工具 等多个方向。下面我给你一个 从入门到进阶的系统学习路线,适合零基础或有一定 Linux 基础的人。
至少要会用 Linux 命令行:
ls, cat, xxd, filechmod, sudops, top, stracegcc, gdb推荐系统:
反汇编本质是“看编译器生成的代码”,不懂 C 很难理解汇编。
重点掌握:
main 参数 argc argv✅ 推荐:
Linux 下最常见的是 x86-64
重点内容:
rax rbx rcx rdx rsi rdi rsp rbp rip
mov, push, pop, call, ret
add, sub, cmp, jmp, je, jne
syscall)✅ 推荐资料:
Linux 工具常用 AT&T 语法:
movl %eax, %ebx
但你也得能看懂 Intel 语法:
mov ebx, eax
理解 Linux 可执行文件结构:
推荐工具:
readelf -h a.out
objdump -d a.out
✅ 推荐:
man elf| 工具 | 用途 |
|---|---|
| objdump | 静态反汇编 |
| gdb | 动态调试 |
| radare2 / r2 | 逆向分析 |
| Ghidra | 反编译 |
| IDA Pro | 商业逆向 |
| strace / ltrace | 系统调用分析 |
int add(int a, int b) {
return a + b;
}
编译:
gcc -O0 -fno-stack-protector -o test test.c
反汇编:
objdump -d test
学习方式:
gdb ./test
(gdb) disas main
(gdb) break main
(gdb) run
(gdb) stepi
重点掌握:
✅ 推荐:
推荐平台:
第 1–2 个月
第 3–4 个月
第 5–6 个月
✅ 今晚 1 小时路线:
gcc -S test.c.s 文件objdump -d a.out如果你愿意,我可以:
你学反汇编的 主要目的 是什么?