HackingLZ/defender_overview
GitHub: HackingLZ/defender_overview
该项目是对 Windows Defender 核心引擎 mpengine.dll 内部 13 阶段扫描流水线的逆向工程文档与分析知识库。
Stars: 145 | Forks: 15
# Windows Defender 扫描流水线 — 逆向工程参考
针对 **mpengine.dll**(v1.1.24120.x,14.3 MB,PE32 x86)内部 13 阶段扫描流水线的逆向工程拆解 —— 该 DLL 是 Windows Defender / Microsoft Defender Antivirus 背后的核心引擎。在 Windows 机器上扫描的每个文件、脚本和内存缓冲区都会流经这个单一的整体二进制文件。
每个阶段的文档都包含了重构的数据结构、伪代码、地址级引用、RTTI 类层次结构以及从二进制文件本身提取的字符串表。
**注意:** 毫无疑问,这个知识库是作为一项 LLM 驱动的实验创建的 —— 其文档、演示文稿和结构分析均在大量 AI 的辅助下生成。随着通过动手实践逆向工程对发现进行验证和完善,这些内容将不断迭代和改进。
## 免责声明
本材料仅供教育和研究目的使用。
在依赖所有发现和技术声明之前,您应该在自己的环境中对它们进行独立验证。
## 仓库结构
```
├── master_slide.html # Slide launcher — links to all 14 decks
├── md/ # Detailed written docs (one per stage)
│ ├── 00_overview.md # Master overview, data structures, entry points
│ ├── 01_entry_point.md # through
│ └── 13_verdict_resolution.md
├── slides/ # HTML slide decks (one per stage)
│ ├── 00_overview_slides.html
│ ├── ...
│ ├── 13_verdict_resolution_slides.html
│ └── deck_master_nav.js # Shared nav controls (Back, Master, Prev/Next Deck)
```
每个阶段都有两个产出物:
| 格式 | 路径模式 | 内容 |
|--------|--------------|---------|
| Markdown | `md/NN_.md` | 包含伪代码、表格和地址引用的完整说明文档 |
| 幻灯片 | `slides/NN__slides.html` | 针对相同内容的可视化演示文稿 |
在浏览器中打开 `master_slide.html` 即可浏览所有演示文稿。
## 流水线阶段
扫描流水线是顺序执行的 —— 每个阶段都可以产生检测结果、为下游阶段收集属性,或者对提取的内容递归调用整个流水线。
| # | 阶段 | 功能描述 |
|---|-------|-------------|
| 00 | **概述** | 流水线架构的端到端映射,`ScanContext` / `ThreatRecord` 数据结构,以及 `__rsignal` / `rsignal` 导出 API |
| 01 | **入口点** | `__rsignal` 和 `rsignal` 如何接收扫描命令、按命令码进行分发,并初始化 `ScanContext` 以供执行 |
| 02 | **可信文件** | SHA-256/SHA-512 可信文件白名单查找 —— 匹配的文件会立即返回安全状态,从而短路(跳过)流水线的其余部分 |
| 03 | **静态引擎级联** | 按固定顺序对原始文件字节进行触发的 11 个签名引擎:STATIC、PEHSTR、PEHSTR_EXT、MACRO、KCRCE、BRUTE、NID、DBVAR、VDLL_SIG、ARHSTR 和 MSILFLAG |
| 04 | **属性收集** | 将带有字符串标签的属性持续收集到扫描上下文中 —— 并输入到第 11 阶段的 AAGGREGATOR 布尔评估器中 |
| 05 | **PE 模拟** | 引擎内嵌的完整 x86/x64/ARM CPU 模拟器:包含 198 个模拟的 Windows API、973 个虚拟 DLL、FOP opcode 追踪,以及用于动态解包的行为遥测 |
| 06 | **解包内容** | 对 PE 节和由模拟器释放的文件进行递归重新扫描 —— 将解包后的内容反馈回整个流水线 |
| 07 | **容器提取** | 通过可插拔的 nUFS 格式处理程序,从归档、Office 文档、PDF、安装程序和其他容器中递归提取子对象 |
| 08 | **脚本去混淆** | 用于 PowerShell、VBScript、JScript 和 Batch 的 NScript 不动点去混淆引擎 —— 迭代简化混淆脚本直至其稳定 |
| 09 | **BRUTE 匹配** | 对原始、解包和去混淆缓冲区进行与格式无关的内容匹配 —— 用于捕获特定格式引擎遗漏的模式 |
| 10 | **Lua 脚本** | Lua 5.1 检测 runtime,通过自定义的 `mp.*` API 执行规则集 —— 引擎中最灵活的检测层 |
| 11 | **属性评估** | AAGGREGATOR 布尔评估:通过 AND/OR/NOT 逻辑树组合所有收集到的属性,以产生复合威胁检测结果 |
| 12 | **MAPS 云查询** | 针对低置信度本地检测向 Microsoft MAPS 进行云端升级 —— 包括 FASTPATH 快速响应和完整样本提交 |
| 13 | **判定解决** | 最终阶段:合并所有检测结果,进行去重,应用严重性排序,过滤基础设施标记,并返回具有最高优先级的单一判定 |
标签:API 测试, PE文件分析, Windows Defender, 二进制分析, 云安全运维, 云资产清单, 后端开发, 多模态安全, 杀毒引擎, 逆向工程, 防御加固