0217、Windows 逆向提升:PE 解析框架与节区
返回:Windows 逆向提升篇 · Windows 逆向总目录
这一部分把 PE 头结构继续推进到“能写解析框架”。核心是:从文件缓冲区出发,安全地找到 DOS 头、NT 头、可选头、节表,并能在 RVA、VA、FOA 之间转换。
1、内容范围
小节
内容
复盘点
02.5 - 03.1
PE 解析工具框架
控制台初始化、用户指令、二进制写入、DOS/NT 定位
03.2 - 04.4
NT / OptionalHeader
FileHeader、Magic、ImageBase、RVA、OEP、Alignment、SizeOfImage
04.5 - 05.5
SECTION 节区
节区定位、属性、对齐、RVA_TO_FOA、文件/内存状态转换
2、解析框架PE 解析工具建议先拆成这些模块:
模块
作用
文件读取
把 PE 文件读入缓冲区
头部校验
检查 MZ、PE 签名和边界
结构定位
定位 DOS、NT、Optional、Section
地址换算
RVA、VA、FOA 互转
指令交互
输入命令查看 ...
0221、Windows 逆向提升:PDB、TLS 与加载风险评估
返回:Windows 逆向提升篇 · Windows 逆向总目录
这一部分把 PE 分析延伸到符号、线程局部存储和加载风险评估。PDB 能让地址恢复成更可读的符号;TLS 能在线程创建/退出等时机执行回调;加载风险评估则把前面解析到的字段整理成安全报告。
1、内容范围
小节
内容
复盘点
16.9 - 18.7
DEBUG / PDB
调试目录、PDB 结构、DIA SDK、符号、类型、函数、变量
18.8 - 20.3
TLS
线程创建、同步互斥、TLS 静态/动态、TLS 回调
20.4 - 21.4
DRAW / LOAD
PE 结构图、加载风险评估、检测手法和报告汇总
2、调试目录与 PDBPE 的调试目录可能记录 PDB 路径、GUID、Age 等信息。PDB 保存符号、类型、函数、源文件等调试信息。
数据
作用
PDB 路径
编译时符号路径
GUID/Age
匹配正确 PDB
函数符号
地址到函数名
类型信息
结构体、类、枚举
源码行号
地址到源文件位置
3、DIA ...
0222、Windows 逆向提升:PE 修改器与 CE 扫描器项目
返回:Windows 逆向提升篇 · Windows 逆向总目录
这一部分是提升篇项目实践:PE 修改器和类似 CE 的内存扫描器。这里按授权实验、工具设计和防护复盘整理,只记录结构、边界和检测视角,不写未授权修改第三方程序的流程。
1、内容范围
小节
内容
复盘点
21.5 - 24.2
PE Modifier
删除 DOS Stub、新增节、扩大节区、移动导入/导出表、入口点修改、ShellCode 框架边界
24.3 - 26.4
CE 扫描器项目
进程列表、附加进程、模块/内存区间、首次扫描、二次扫描、结果修改
26.5 - 26.7
路线规划
Windows 平台开发、逆向体系、攻防篇前置
2、PE 修改器项目PE 修改器的核心是“修改字段前先理解字段之间的联动”。不能只改一个值,还要同步相关大小、偏移、对齐和目录项。
操作
联动字段
新增节
节数量、节表、SizeOfImage、对齐
扩大节区
VirtualSize、SizeOfRawData、文件大小
移动导出表
DataDirectory、RVA、相关字 ...
0212、Windows 逆向入门:C++ 对象模型逆向
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分专门复盘 C++ 对象在二进制里的样子。源码里的类、继承、多态、虚函数,进入反汇编后会变成对象地址、成员偏移、虚表指针、间接调用和构造析构序列。
1、内容范围
小节
内容
复盘点
16.7 - 16.9
对象模型与 thiscall
对象存储、成员偏移、this 指针
17.0 - 17.3
对象传参返回
调用约定、类对象返回、编译器优化
17.4 - 17.9
构造析构与拷贝
构造触发、堆对象、全局对象、深拷贝
18.0 - 18.2
构造限制与常成员
默认参数、静态成员、const 成员函数
18.3 - 18.7
继承对象模型
单继承、多继承、菱形继承
18.8 - 19.4
多态与虚表
虚函数指针、虚表、多态调用、纯虚对象
19.5 - 19.6
模板使用与特化
模板实例化、特化和代码拷贝
2、对象模型普通 C++ 对象通常只保存成员变量;成员函数在代码区。调用成员函数时会传入 this 指针。
12345对象内存:[成员变量 1][成员变量 2][...]成员函 ...
0211、Windows 逆向入门:数组、指针与结构体逆向
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分把高级语言数据结构翻译成内存布局。数组、指针、结构体和对象成员,在反汇编里最后都会变成地址计算、偏移访问和间接调用。
1、内容范围
小节
内容
复盘点
14.0 - 14.4
数组逆向
数组布局、寻址公式、多维数组、越界覆盖
14.5 - 14.8
移位与数据转换
SHL/SHR/SAL/SAR、二进制转换、数据完整性
14.9 - 15.2
数组地址与多维数组
数组地址传递、返回、指针数组、二维数组
15.3 - 16.1
指针逆向
指针赋值、解引用、运算、多级指针、安全性
16.2 - 16.4
函数指针与段机制
CALL 编码、函数指针、段选择子
16.5 - 16.9
结构体与 this
结构体布局、对象模型、成员偏移、thiscall
2、数组内存布局一维数组是连续内存。
1int nums[4] = {1, 2, 3, 4};
寻址公式:
1元素地址 = 数组基址 + 下标 * 元素大小
反汇编中常看到:
1m ...
0213、Windows 逆向入门:MASM 汇编基础
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分用 MASM 把汇编从“反汇编阅读”推进到“能写最小实验”。写汇编不是为了替代 C/C++,而是为了更准确理解数据定义、调用约定、结构体布局和伪指令。
1、内容范围
小节
内容
复盘点
19.7 - 19.9
MASM 基础
保留字、标识符、伪指令、操作数格式
20.0 - 20.9
数据定义
DB/DW/DD、EQU、地址计数器、OFFSET、ALIGN
21.0 - 21.8
过程与参数
TYPE/LENGTHOF/SIZE、PROTO、INVOKE、ADDR、USES、LOCAL
21.9 - 22.7
条件和循环
.IF、.WHILE、.REPEAT、JCC
22.8 - 23.3
STRUCT/UNION/MACRO/API
结构体、联合体、宏和 Win32 API 调用
2、标识符与伪指令MASM 里伪指令不是 CPU 执行的机器指令,而是给汇编器看的说明。
类型
例子
作用
...
0214、Windows 逆向入门:x64 基础与系统机制
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分从 x86 过渡到 x64。x64 不只是寄存器变宽,还涉及调用约定、栈布局、虚拟地址、WOW64、权限级别和页表转换等系统机制。
1、内容范围
小节
内容
复盘点
23.4 - 23.9
x64 路线与架构差异
指令拓展、WOW64、寄存器、虚拟地址、调用约定
24.0 - 24.5
x64 栈与地址
参数传递、栈空间、长跳、全局变量、指针宽度
24.6 - 24.9
手册与权限
Intel 手册、CPUID、Ring0/Ring3、标志寄存器
25.0 - 25.9
段/控制/调试寄存器
段选择子、描述符、CR0/CR2、页表、调试寄存器、地址大小
26.0 - 26.3
断点和动态调试
断点类型、单步、基础路线收尾
2、x64 寄存器x64 增加了寄存器数量和宽度。
类型
示例
通用寄存器
RAX、RBX、RCX、RDX、R8-R15
指针寄存器
RSP、RBP、RIP
SIMD 寄存器
XMM、YMM
标志寄 ...
0215、Windows 逆向入门:调试器项目
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分是入门篇项目:做一个简化调试器。目标不是替代成熟调试器,而是理解 Windows 调试事件如何流转,进程、线程、模块、异常、断点和日志如何组织。
1、内容范围
小节
内容
复盘点
26.4 - 26.9
调试器框架
打开/附加进程、调试事件、用户交互
27.0 - 27.9
调试事件处理
创建进程、退出、异常、日志、转储
28.0 - 28.9
线程信息
线程上下文、TEB、栈、时间、模块定位
29.0 - 29.9
模块信息
模块结构、文件映射、导入导出、卸载、异常派发
30.0 - 31.1
异常与断点
SEH/VEH、断点设置/移除、单步执行
31.2 - 31.5
路线收尾
开发篇、逆向篇、调试篇和提升方向
2、调试器基本循环简化模型:
12345启动/附加目标进程等待调试事件识别事件类型记录日志或处理事件继续目标进程
3、常见调试事件
事件
复盘内容
创建进程
目标路径、入口点、主线程
创建线程
线程 ID、入口地址
...
0205、Windows 逆向入门:寄存器、标志位与内存基础
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分开始真正进入 CPU 状态:寄存器保存当前执行环境,标志位保存运算结果特征,内存保存代码和数据。逆向时看懂这三类信息,就能知道程序“现在执行到哪里、刚才算出了什么、接下来会跳到哪里”。
1、内容范围
小节
内容
复盘点
02.5
寄存器
通用寄存器、段寄存器、指令指针寄存器
02.6
通用寄存器对应关系
EAX/AX/AH/AL、RAX/EAX/AX/AL 的包含关系
02.7
寄存器包含关系测试
修改低位寄存器对高位的影响
02.8
段寄存器特性
CS/DS/SS/ES/FS/GS 的基本用途
02.9
指令指针寄存器
EIP/RIP 保存下一条指令地址
03.0 - 03.8
标志寄存器
CF、PF、AF、ZF、SF、DF、OF 与 EFLAGS
03.9 - 04.4
内存基础
内存特性、内存管理、端序、读写和寻址
2、通用寄存器寄存器是 CPU 内部速度最快的小容量存储区域。入门阶段先掌握常见用途,不必一开始背完整架构手册。
x86
常见用途
x64 对应
...
0206、Windows 逆向入门:汇编框架与基础指令
返回:Windows 逆向入门篇 · Windows 逆向总目录
这一部分把汇编从“单条指令”放回“程序框架”里看。逆向时不只要知道 add 是加法,还要知道代码段、数据段、入口点、调用 API 和程序退出之间的关系。
1、内容范围
小节
内容
复盘点
04.5
C 语言控制台程序
高级语言程序的入口、调用和退出
04.6
汇编程序框架
数据段、代码段、入口点、调用 API
04.7
程序指令集
指令、操作数、寄存器和内存
04.8
工作模式
实模式、保护模式、用户态理解
04.9
动态调用与函数声明
API 声明、导入与调用
05.0 - 05.3
段定义与入口周期
数据段、代码段、入口点
05.4 - 06.5
算术与位运算
ADD、SUB、MUL、DIV、AND、OR、XOR、NOT
06.6 - 06.8
操作数与调试
操作数类型、课程路线和 VS 调试
2、C 控制台程序与汇编框架C 程序通常从 main 开始,但真正的进程入口还包括运行库初始化。入门阶段可以先把它简化成:
1程序入口 -> 初始化运行环境 -> 调用 ...





