ShallowFeather/KDemu

GitHub: ShallowFeather/KDemu

KDemu 是一个结合 CPU 模拟与原生内核内存转储的混合仿真器,专为分析高级 Rootkit 和反作弊驱动而设计。

Stars: 177 | Forks: 30

# KDemu 一种混合的半模拟、半原生 Windows 内核驱动模拟器,专为高级 Rootkit 和反作弊分析而设计,旨在解决现有模拟解决方案的局限性。 ## 会议 本项目已被 CODEBLUE 2025 接收。 [Bypassing Anti-Debugging: A Hybrid Real-Simulated Approach to Rootkit Analysis ]("https://codeblue.jp/en/program/time-table/day2-t2-01/) ## 架构 KDemu 的混合架构包含以下部分: - **模拟引擎** (`Emulate.cpp/hpp`):带有智能 Hook 管理的内核 API 实现 - **PE 加载器** (`LoadPE.cpp/hpp`):高级 PE 解析,支持内核转储集成和驱动覆盖 - **内核转储管理器**:实时内核内存转储分析和参数提取 - **SEH 处理器**:使用 InvertedFunctionTableList 的原生 Windows 异常处理 - **多线程引擎**:带有内存锁定和上下文管理的并行执行 - **反检测层**:MSR 处理、虚拟机规避和检测对策 - **监控系统**:对象访问跟踪和寄存器操作日志记录 ## 安装 1. **克隆仓库**: git clone cd KDemu 2. **通过 vcpkg 安装依赖**: vcpkg install unicorn capstone 3. **构建项目**: - 在 Visual Studio 中打开 `KDemu.sln` - 选择 Release 配置 (x64) - 构建解决方案 4. **下载内存转储**: https://drive.google.com/file/d/1MDZ2s7RLGvypC0FDS6MOYgMglTyU6O9n/view?usp=sharing 将其放入 KDemu 文件夹 ## 使用方法 ### 前置条件设置 1. **内核内存转储**:获取在驱动入口断点处捕获的 Windows 内核内存转储 (`mem.dmp`) 2. **目标驱动**:将您想要分析的驱动程序放入项目目录 ### 调试 通过取消 `mainThread()` 中 `gdbServer()` 调用的注释来启用 GDB 服务器支持。 ## 项目结构 ``` KDemu/ ├── KDemu/ │ ├── KDemu.cpp # Main entry point │ ├── Emulate.cpp/hpp # API emulation engine │ ├── LoadPE.cpp/hpp # PE loader and memory management │ ├── UnicornEmu.hpp # Unicorn engine wrapper │ ├── Global.h # Common definitions │ ├── NtType.hpp # Windows type definitions │ ├── include/ # Third-party headers │ └── lib/ # Static libraries ├── vcpkg.json # Package dependencies └── KDemu.sln # Visual Studio solution ``` ## 注意 对于想要分析 EAC 的人,它会因为 triple fault 而退出,因为 unicorn 无法处理除零异常 https://github.com/unicorn-engine/unicorn/issues/1883 因此,当引发错误时,您应该克隆 unicorn 对象并重新启动以重置错误值。 对于 Nexon Driver,它会扫描 bootloader,但我们的转储缺少 bootloader 的内存 :( ## 作者 ShallowFeather & HeroBurger ## 致谢 ### 核心技术 - [Unicorn Engine](https://www.unicorn-engine.org/) - CPU 模拟框架 - [Capstone](https://www.capstone-engine.org/) - 反汇编引擎 - [LIEF](https://lief.quarkslab.com/) - 二进制分析库(贡献了 Bug 修复) - [kdmp-parser](https://github.com/0vercl0k/kdmp-parser) - 内核转储解析 ### 研究参考 - [**KACE (Kernel AntiCheat Emulator)**](https://github.com/waryas/KACE) - 用户态到内核态映射的灵感来源 - [**What The Fuzz**](https://github.com/0vercl0k/wtf) - 内核转储利用概念 - **Speakeasy & Qiling** - 对象监控和 API 模拟方法
标签:Capstone, CODEBLUE, DOM解析, GDB服务器, PE加载器, Rootkit, Ruby on Rails, SEH异常处理, Unicorn引擎, Windows内核, Zeek, 二进制分析, 云安全运维, 云资产清单, 仿真分析, 内存转储, 内核驱动, 反作弊, 反检测, 反调试, 恶意代码分析, 混合仿真, 白帽子, 网络协议, 逆向工程, 配置文件, 驱动模拟器