这一部分是提升篇项目实践: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、相关字符串和表 |
| 移动导入表 |
IAT/INT、名称表、描述符 |
| 修改入口点 |
AddressOfEntryPoint 和原入口回跳关系 |
3、修改风险
| 风险 |
说明 |
| 对齐错误 |
文件能打开但加载失败 |
| 目录项没同步 |
工具能看字段但运行异常 |
| 签名失效 |
文件改动会破坏证书签名 |
| 入口错误 |
程序启动崩溃 |
| 节属性异常 |
防护工具可能告警 |
4、CE 扫描器项目
扫描器项目的目标是理解进程内存枚举、区间过滤、类型匹配和二次筛选。
| 模块 |
作用 |
| 进程列表 |
枚举授权目标 |
| 模块列表 |
确定模块基址和范围 |
| 内存区间 |
过滤可读写区域 |
| 首次扫描 |
找到候选地址 |
| 二次扫描 |
根据新值缩小结果 |
| 结果展示 |
分页、跳转、临时缓存 |
5、扫描类型
| 类型 |
复盘点 |
| 整数 |
字节宽度、大小端、有无符号 |
| 浮点 |
精度误差 |
| 字节数组 |
通配符和连续性 |
| 字符串 |
编码和终止符 |
6、安全边界
这类项目容易被误用,博客只保留:
- 自写程序或授权实验目标。
- 进程/模块/内存区间的枚举和日志。
- 类型匹配和二次筛选的原理。
- PE 字段修改的联动关系和风险。
- 防护检测可以观察哪些异常。
不记录绕过保护、未授权修改、隐蔽执行等可操作流程。
7、防护复盘
| 行为 |
检测视角 |
| 打开进程 |
句柄权限和目标关系 |
| 读写内存 |
访问范围、频率和权限 |
| 修改 PE |
签名、节表、入口点和目录项变化 |
| 搜索内存 |
大范围读取行为 |
| 结果修改 |
写入地址和模块归属 |
8、学习检查清单
| 检查项 |
状态 |
| 能说明新增节需要同步哪些字段 |
待复盘 |
| 能解释入口点修改为什么风险高 |
待复盘 |
| 能设计内存扫描器的模块划分 |
待复盘 |
| 能说明首次扫描和二次扫描的区别 |
待复盘 |
| 能把项目限定在授权实验和防护复盘范围内 |
待复盘 |