如果你写过应用程序,却从没进过 Ring 0,那么 Windows x64 驱动开发会把你原来的很多直觉推翻:没有 CRT 帮你兜底,没有异常可以随手往上抛,一个字节的越界就可能换来一次蓝屏。这门课面向的正是处在这个门槛上的学习者——有 C/C++ 基础,想在 Windows 平台上把驱动这条线补起来,或者正准备转到内核相关的岗位。

先确认你缺的是哪一块

驱动开发不是一门孤立的技能,它由几个相对独立的能力块拼成。你可以先对照一下自己的情况:

  • 知道怎么写用户态程序,但不清楚用户态和内核态之间的边界在哪里,IRP 是怎么从 CreateFile 一路走到你的派遣函数里的;
  • 写过简单的 C 代码,但对结构体对齐、指针运算、内存屏障这些在驱动里被放大无数倍的东西没有实感;
  • 用过 Visual Studio 编译普通工程,但没有配置过 WDK 工程、没有处理过驱动签名和测试签名模式;
  • 看驱动代码能看懂语法,但说不清分页内存和非分页内存的区别,也不知道为什么 DPC 里不能随便调用某些函数。

上面任何一条卡住,直接去啃框架源码都会很痛苦。这门课的价值就在于把这几个块按依赖关系铺开,而不是一上来就让你抄一份能跑但看不懂的代码。

这门课会把你带到哪一步

课程从 x64 环境下的驱动工程结构讲起,包括 WDK 与 VS2019 的配合、驱动入口 DriverEntry 的职责、设备对象与符号链接的建立。接着进入 I/O 请求的处理主线,围绕 IRP 的创建、传递、完成展开,让你理解一个用户态 ReadFile 背后在内核里发生了什么。

再往后是驱动开发里最容易出问题的部分:内存管理、同步与中断处理。分页与非分页内存的选择、自旋锁与互斥体的使用场景、DPC 和 ISR 的执行环境限制,这些内容在应用层几乎不会遇到,但恰恰是内核代码稳定与否的分水岭。课程里安排了对应的实验环节,你需要自己动手编译、加载、用调试器观察,而不是只看讲解。

另外,课程会涉及 C、C++、汇编在驱动中的不同角色。别被“汇编”两个字吓到,这里更多是让你在调试时能看懂反汇编窗口里的调用约定和栈帧,而不是让你用汇编写整个驱动。

看完应该能回答的问题

  • 一个用户态程序调用 DeviceIoControl,控制码从应用层传到驱动层,中间经过了哪些结构体?
  • 为什么驱动的卸载函数里要保证所有已分配的资源和已创建的设备对象都被正确释放?漏掉会怎样?
  • 在 PASSIVE_LEVEL 和 DISPATCH_LEVEL 两种 IRQL 下,同一段代码的可用函数集合为什么不同?
  • 测试签名和正式签名在开发阶段分别意味着什么,为什么你的驱动在别人机器上装不上?

如果你能在不看资料的情况下把这些说清楚,说明内核这条路你已经踩实了第一步。

怎么用这套材料

建议按模块顺序推进,每看完一部分就自己新建一个最小驱动工程验证一遍,哪怕只是打印一行调试信息。驱动开发里“看会了”和“写对了”之间的距离,比应用层大得多。遇到蓝屏不要跳过,用 WinDbg 把 dump 读一遍,这会比你重复看三遍视频更有用。

适合已经有 C/C++ 基础、愿意花时间在调试器前坐住的读者。如果你连指针和结构体都还不熟,先回去补语言基础,再回来碰内核。

Windows x64位驱动程序开发

课程详情

课程标题:Windows x64位驱动程序开发

本课程旨在帮助学员提高Windows驱动程序开发水平,深入掌握x64位驱动程序开发的核心技能。

适合人群

  • 对编程感兴趣的学员

学习收获

  • 掌握x64位驱动程序开发的基本原理和技巧
  • 熟悉VS2019编程软件的使用
  • 了解C、C++、MFC、汇编等编程语言在驱动程序开发中的应用

课程亮点

  • 全面讲解x64位驱动程序开发知识
  • 结合实际案例,深入浅出
  • 提供丰富的实践机会,助力学员快速提升技能

课程目录

01 Windows x64位驱动程序开发VS2019 安装和环境.mp4
02 VS2019 创建一个驱动程序.mp4
03 应用程序加载驱动.mp4
04 应用程序卸载驱动.mp4
05 应用程序与驱动程序通信.mp4
06 应用程序与驱动程序数据交互.mp4
07 windbg搭建双机调试环境.mp4
08 内存操作.mp4
09 VS2019 配置双机调试.mp4
10 遍历进程.mp4
11 结束进程.mp4
12 内核拦截  inLine Hook.mp4
13 驱动中使用链表.mp4
14 遍历驱动模块.mp4
15 隐藏模块驱动.mp4
16 隐藏进程.mp4
17 进程回调函数.mp4
18 保护进程.mp4
19 保护内存.mp4