0201、Windows 零基础逆向教程(一):入门篇
返回:Windows 逆向总目录 · 网络安全学习主页
这一篇是 Windows 逆向的入门主线,内容很长,不能全部塞进一篇文章里。这里按“环境与数据 → 寄存器与标志位 → 内存与汇编框架 → 指令与堆栈 → 控制流逆向 → 数据结构逆向 → C++ 对象逆向 → MASM → x64 → 调试器项目”的节奏拆成章节页。
1、学习定位
入门篇要建立三条线:
| 线索 | 目标 |
|---|---|
| 汇编线 | 能看懂常见指令、寄存器、标志位、堆栈和调用过程 |
| 逆向线 | 能把 C/C++ 代码和反汇编结构互相对应 |
| 调试线 | 能使用 DBG/IDA/Visual Studio 观察程序运行、断点、异常和模块信息 |
对我来说,这一篇不是为了“记住所有指令”,而是为了能在调试器里看懂程序正在做什么。
2、章节目录
| 编号 | 内容范围 | 主要内容 | 笔记 |
|---|---|---|---|
| 0204 | 01 环境、语言映射与数据表示 | VS 配置、汇编执行框架、机器语言/汇编/高级语言关系、进制、存储宽度、数据截断、正负数和整数底层规则 | 0204 |
| 0205 | 02 寄存器、标志位与内存基础 | 通用寄存器、段寄存器、EIP、EFLAGS、CF/PF/AF/ZF/SF/DF/OF、内存特性、端序和寻址 | 0205 |
| 0206 | 03 汇编框架与基础指令 | C 控制台框架、汇编程序框架、段定义、数据段/代码段、ADD/SUB/MUL/DIV、位运算、操作数类型 | 0206 |
| 0207 | 04 堆栈、CALL/RET 与函数逆向 | 线程栈、PUSH/POP、PUSHAD/POPAD、CALL/RET、MOV、REP/STOS、函数调用栈和调用约定 | 0207 |
| 0208 | 05 DBG/IDA 与函数结构分析 | 栈帧回溯、符号信息、DBG 配置与技巧、IDA 交叉引用、参数传递、返回值寄存器、反汇编还原代码 | 0208 |
| 0209 | 06 数据、全局变量与编码逆向 | MOV/MOVZX/MOVSX、整数溢出、全局/局部变量特征、PE 节区文件数据、小数与字符编码、字符串指令 | 0209 |
| 0210 | 07 条件、分支与循环逆向 | CMP/TEST/JCC、if/三目/switch、跳转表、LOOP/REP、for/while/do while、continue/break 和缓冲区案例 | 0210 |
| 0211 | 08 数组、指针与结构体逆向 | 数组布局、寻址公式、缓冲区溢出、指针数组、多级指针、函数指针、CALL 公式、结构体和 this 指针 | 0211 |
| 0212 | 09 C++ 对象模型逆向 | 对象模型、thiscall、静态成员、对象传参返回、构造析构、继承、多态、虚表、模板特化 | 0212 |
| 0213 | 10 MASM 汇编基础 | MASM 标识符、伪指令、数据定义、OFFSET、ALIGN、TYPE/LENGTHOF/SIZE、PROTO、INVOKE、STRUCT/UNION/MACRO | 0213 |
| 0214 | 11 x64 基础与系统机制 | x64 寄存器、WOW64、虚拟地址、调用约定、栈变化、CPUID、Ring0/Ring3、控制寄存器和地址转换 | 0214 |
| 0215 | 12 调试器项目 | Debug API、调试事件、进程/线程/模块/异常事件、断点、单步、内存转储、日志和交互框架 | 0215 |
3、整理原则
逆向笔记只记录合法学习、授权分析和防护理解。涉及缓冲区溢出、堆栈逃逸、断点、调试器等内容时,重点放在原理复盘、调试观察和安全边界,不整理未授权攻击流程。
4、复盘重点
| 方向 | 复盘重点 |
|---|---|
| 二进制数据 | 进制、位宽、截断、补码、端序和编码 |
| CPU 状态 | 寄存器、EFLAGS、EIP/RIP、栈指针和基址指针 |
| 汇编指令 | 数据传送、算术、位运算、比较跳转、字符串指令 |
| 栈与函数 | 参数、返回地址、栈帧、调用约定和返回值 |
| 控制结构 | if/switch/loop 在汇编中的形态 |
| 数据结构 | 数组、指针、结构体、对象、虚表的内存布局 |
| 工具使用 | Visual Studio、DBG、IDA 的断点、单步、交叉引用和回溯 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!








