0219、Windows 逆向提升:无模块加载与模块隐藏原理
这一部分涉及无模块加载、反射式加载、模块隐藏等双用途内容。这里只按 PE 加载机制、防护分析和检测复盘来整理,不写成可直接用于隐蔽加载的实现流程。
1、内容范围
| 小节 | 内容 | 复盘点 |
|---|---|---|
| 08.7 - 10.0 | 无模块加载 | 文件缓存、内存映像、导入修复、重定位修复、自加载流程 |
| 10.1 - 12.1 | 模块隐藏 | 反射式注入思路、私有映像、跨进程数据、远程入口点 |
2、文件状态与内存映像
PE 文件不能简单按文件字节直接执行,加载器会按节表把文件状态转换成内存状态。
| 状态 | 特点 |
|---|---|
| 文件缓存 | 按 FileAlignment 排列 |
| 内存映像 | 按 SectionAlignment 排列 |
| 节区映射 | 每个节从文件偏移映射到 RVA |
3、手动加载需要处理什么
合法加载器会完成很多工作。复盘手动加载思路时,要理解这些工作点:
| 工作 | 说明 |
|---|---|
| 映像拉伸 | 把文件节映射到内存布局 |
| 导入修复 | 加载依赖 DLL,填充 IAT |
| 重定位修复 | 基址变化时修正绝对地址 |
| 入口调用 | 满足前置条件后进入入口点 |
| 权限设置 | 根据节属性设置内存保护 |
4、无模块加载的检测视角
异常加载不一定会出现在正常模块列表中,因此防护侧不能只看模块枚举。
| 观察点 | 说明 |
|---|---|
| 私有可执行内存 | 不属于正常映像节的可执行区域 |
| PE 头痕迹 | 内存中出现 MZ/PE 结构 |
| IAT 修复痕迹 | 动态解析 API 或手动填表 |
| 重定位痕迹 | 大量地址修正 |
| 入口执行 | 线程入口或回调地址异常 |
5、模块隐藏相关概念
模块隐藏通常围绕“内存中有代码,但常规模块列表不明显”展开。学习时只记录原理和检测点。
| 概念 | 复盘点 |
|---|---|
| 私有映像 | 内存区域不一定对应正常模块文件 |
| 共享/写拷贝 | 系统 DLL 页保护和共享机制 |
| 远程数据 | 跨进程读写需要权限和边界 |
| ShellCode | 只做结构和检测痕迹复盘 |
6、安全边界
这类内容非常容易越界。博客里只保留:
- Windows 加载器做了哪些工作。
- PE 结构哪些字段参与加载。
- 防护侧可以观察哪些内存和事件痕迹。
- 授权实验中如何记录日志和清理环境。
不记录隐蔽加载、远程执行或绕过检测的可复用步骤。
7、学习检查清单
| 检查项 | 状态 |
|---|---|
| 能说明文件状态和内存映像的区别 | 待复盘 |
| 能列出手动加载需要处理的 PE 结构 | 待复盘 |
| 能说明导入修复和重定位修复的作用 | 待复盘 |
| 能从防护角度识别私有可执行内存 | 待复盘 |
| 能把无模块加载内容限定在授权分析范围内 | 待复盘 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!






