这一篇是 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 的断点、单步、交叉引用和回溯