简而言之就是
- visual stdio 2019
- windows SDK
- windows WDK
如果vs没有kernel的项目的模板,找到vs目录的WDK.vsix
即可
关于调试
windbg调试器
同时windows 虚拟机我使用的是 vmware,添加了一个COM串口
加载驱动
使用KmdKit
windows设置
msconfig -> 调试 -> COM2 …
最简单的hello world
-
打开vs,找到KMDF (kernel mode driver empty)
-
设置驱动项目
-
取消晚上12点后编译报错
项目 -> 属性 -> Inf2Cat -> Use Local Time
-
-
代码
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 驱动卸载函数
VOID
DriverUnload(PDRIVER_OBJECT DriverObject)
{
UNREFERENCED_PARAMETER(DriverObject);
DbgPrint("Bye\n");
}
// 驱动入口函数
// System 在内核模式下运行该函数
NTSTATUS
DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(RegistryPath); //宏防止编译器报错
DbgPrint("Hello World!\n"); //调式输出
DriverObject->DriverUnload = DriverUnload; //驱动卸载函数
return STATUS_SUCCESS; //加载成功返回码
}-
Class改为
Class=System
ClassInstall32 直接删除两行(就是直接把这个属性删除了)
-
-
使用加载器加载
-
使用KmdManager
-
使用windbg x64调试
File -> Kernel Debug
-
-
F5继续过后在虚拟机里面运行