前置基础阶段(当前你的位置)
你已经学过 Python / Java / C / C++,这是非常好的基础。
(小甲鱼老师的课程一定要看)
现在的目标应该是打牢以下几个基础知识:
操作系统和计算机体系结构
了解内存结构(栈、堆、数据段、代码段)
进程、线程、寄存器的作用
虚拟内存和地址空间
推荐书:
《王爽 汇编语言》:作为第一本汇编书很合适
《深入理解计算机系统(CSAPP)》:这是计算机底层最经典的书之一,尤其是 pwn 会大量涉及 stack/heap,这本书讲得特别系统(建议大一下或大二认真啃一遍)
基础汇编 + 静态逆向分析阶段
这一阶段目标是:看懂反编译出来的汇编,理解常见编译器行为。
学习目标:
学习 x86/x64 汇编语言基础
掌握 IDA Free、Ghidra 等逆向工具
看懂 C 编译出来的汇编逻辑
能理解简单程序的反汇编结果
推荐资源:
《汇编语言(黑马程序员那本)》:相对浅显易懂
Ghidra 官方文档 + 教程
工具:
Ghidra、IDA Free、Cutter + Radare2
objdump, gdb, x64dbg
逆向工程入门阶段
学习目标:
静态+动态分析结合
破解简单的 CrackMe、软件注册机制
理解函数调用、字符串加密、混淆等
推荐资源:
OSEP 或 RE for Beginners 电子书(可搜索下载)
《Practical Reverse Engineering》英文但非常经典
CTF Wiki - 逆向部分(
https://ctf-wiki.org)
练手网站:
Crackmes.one
reversing.kr(经典题)
PWN入门阶段(超关键)
pwn 就是利用程序漏洞拿 Shell 的一种方式,重点是二进制漏洞利用。
学习目标:
熟练掌握 gdb + pwndbg + peda 使用
理解栈溢出、格式化字符串、ROP、Heap漏洞
能看懂 CTF 中 pwn 类题目的代码、理解其利用原理
推荐资料:
《CTF PWN入门指南》(github 上有很多)
Pwn College:特别适合新手的免费课程,由 ASU 安全实验室制作
《Linux 高级程序设计》:用于补充 Linux 系统编程知识
CTF Wiki:PWN 部分讲得非常详细(强烈推荐)
工具:
gdb / pwndbg / peda
pwntools(Python 编写的 PWN 利用框架)
one_gadget / ROPgadget / libc-database
练手平台:
pwnable.kr
pwnable.tw
CTFHub
NSSCTF
建议的学习顺序(路线图)
- 1. 语言基础(已完成)
- 2. 汇编 + 操作系统(你正在做)
- 3. 静态逆向(CrackMe + Ghidra)
- 4. 动态调试(gdb + x64dbg)
- 5. CTF PWN 入门(栈溢出等经典漏洞)
- 6. 中级逆向(混淆、packer、反虚拟化等)
- 7. 高级进阶(Kernel Pwn、Windows逆向)
复制代码