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, 二进制分析, 云安全运维, 云资产清单, 仿真分析, 内存转储, 内核驱动, 反作弊, 反检测, 反调试, 恶意代码分析, 混合仿真, 白帽子, 网络协议, 逆向工程, 配置文件, 驱动模拟器