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, 二进制分析, 云安全运维, 云资产清单, 后端开发, 多模态安全, 杀毒引擎, 逆向工程, 防御加固