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