cnthigu/krnl-ioctl-demo
GitHub: cnthigu/krnl-ioctl-demo
这是一个通过IOCTL演示Windows内核驱动与用户模式通信的项目,用于实现进程内存操作和模块枚举。
Stars: 1 | Forks: 0
# Windows 内核 IOCTL 演示
通过 IOCTL 实现驱动程序与用户模式的通信及进程内存读写
## 工作原理
本项目演示了如何使用 DeviceIoControl (IOCTL) 实现 WDM 内核驱动与用户模式应用程序之间的通信。用户模式应用通过 `\\.\SimpleDriver` 打开设备,发送带有缓冲区数据的 IOCTL 代码,然后驱动在内核空间中处理请求。
**IOCTL 定义**
| 代码 | 描述 |
|----------------|-----------------------------------------------------------------------------|
| IOCTL_ADD | 发送一个整数,驱动程序加 1 后返回(简单测试) |
| IOCTL_READ | 通过 MmCopyVirtualMemory 从进程读取内存 |
| IOCTL_WRITE | 向进程写入内存 |
| GET_MODULE | 通过遍历目标进程的 PEB/LDR 返回模块的基地址 |
## 演示

**注意:** 这是一个演示。写入操作使用硬编码的伪造地址;它可能会失败。要正确使用,请更改目标进程并使用有效的地址。
## 项目结构
| 文件夹 | 内容 |
|----------------|--------------------------------------------|
| `kernel_mode/`| 内核驱动(driver.cpp, headers.h) |
| `user_mode/` | 用户模式应用(main.cpp, headers.h) |
## 加载驱动程序
**选项 1** — 测试模式(使用 `sc create` / `sc start`)
**选项 2** — KDMapper 或自定义加载器
务必启用测试模式以测试此项目。如果您希望在测试模式之外使用它,请使用自定义的驱动加载器或对驱动进行签名。
**注意:本项目仅供教育目的。**
如需更详细的技术分析和学习笔记
标签:IOCTL, WDM, Windows API, Windows驱动开发, 内存操作, 内核驱动, 操作系统安全, 教育项目, 模块枚举, 用户模式与内核模式通信, 系统编程, 网络协议, 进程内存读写, 进程操作, 驱动程序