01
逆向工程概述
什么是逆向工程 · 应用领域(安全、漏洞、竞品) · 道德与法律边界
概念伦理
02
计算机基础回顾
CPU架构(x86/x64/ARM) · 寄存器 · 堆栈与内存布局 · 程序执行流程
体系结构内存
03
汇编语言入门 (上)
x86汇编基础 · 通用寄存器 · 常用指令 (mov, add, sub, push, pop, call, ret)
汇编指令
04
汇编语言入门 (下)
条件跳转 (jmp, je, jne) · 循环结构 · 函数调用约定 (cdecl, stdcall)
跳转约定
05
PE文件结构解析
DOS头 · NT头 · 节表 · 导入表与导出表 · 资源节
PEWindows
06
ELF文件结构解析
ELF头 · 程序头表 · 节头表 · 符号表与重定位
ELFLinux
07
静态分析工具 (上)
IDA Pro 界面 · 反汇编窗口 · 函数列表 · 交叉引用
IDA静态
08
静态分析工具 (下)
Ghidra 基础使用 · 反编译 · 脚本编写入门
Ghidra反编译
09
动态分析工具 (上)
OllyDbg / x64dbg 界面 · 基本操作 · 断点 (软件/硬件)
调试器断点
10
动态分析工具 (下)
内存查看与修改 · 堆栈跟踪 · Run Trace
内存跟踪
11
调试器原理
调试事件 · 异常处理 · 单步执行 · 硬件断点与内存断点
原理异常
12
字符串与API分析
查找关键字符串 · 分析API (MessageBox, CreateFile, VirtualAlloc) · 定位关键代码
API字符串
13
反调试技术 (上)
IsDebuggerPresent · NtGlobalFlag · PEB检测
反调试PEB
14
反调试技术 (下)
时间检测 · 断点检测 · 异常处理反调试
反调试检测
15
反反调试技术
绕过IsDebuggerPresent · 绕过NtGlobalFlag · StrongOD/ScyllaHide
绕过插件
16
代码混淆与加壳
什么是加壳 · 常见壳 (UPX, ASPack, Themida) · 手动脱壳思路
加壳混淆
17
脱壳实战 (上)
使用OD手动寻找OEP · Dump进程 · 修复导入表
脱壳OEP
18
脱壳实战 (下)
脱壳工具 (UPX -d, Unpacker) · 分析VMProtect虚拟化代码
VMProtect工具
19
网络协议逆向
抓包工具 (Wireshark, Fiddler) · 分析HTTP/HTTPS · 定位加密函数
协议抓包
20
加密算法识别
识别AES, RSA, Base64 · 在二进制中查找S盒与常量
密码学S盒
21
补丁与修改
二进制补丁 (Hex编辑) · 内存补丁 · 修改跳转实现破解
补丁破解
22
Keygen与注册算法
分析验证流程 · 提取算法 · 编写注册机
Keygen算法
23
恶意软件分析入门
静态分析恶意样本 · 动态沙箱分析 · 提取IOC
恶意软件IOC
24
漏洞分析基础
栈溢出原理 · Shellcode编写入门 · 利用MSF生成Payload
漏洞Shellcode
25
Fuzzing基础
什么是Fuzzing · AFL基础使用 · Crash分析
FuzzingAFL
26
ARM逆向基础
ARM与x86区别 · ARM指令集 (Thumb/ARM) · ARM函数调用约定
ARM嵌入式
27
iOS逆向基础
越狱环境搭建 · Theos工具链 · Cycript与Frida基础
iOSFrida
28
Android逆向基础
APK结构 · dex2jar与jd-gui · Smali语法 · Xposed框架
AndroidSmali
29
WebAssembly逆向
Wasm文件结构 · Wabt工具链 · 反编译Wasm到C
WasmWabt
30
综合实战:CrackMe
静态分析 → 动态调试 → 脱壳 → 编写Keygen
实战CrackMe