一、安装WDK10
https://docs.microsoft/zh-cn/windows-hardware/drivers/download-the-wdk
首先下载wdk10,并安装,安装过程中会提示你当前sdk版本和wdk不匹配,所以还需要先把sdk装上。这些步骤比较简单略过了,记得安装wdk时勾上安装插件的选项,如下图:
二、编写 WIN7 X64 驱动
wdk10装好之后,可以直接开发win7的驱动,下面构建一个空WDM驱动项目:
#include <ntddk.h>
VOID DriverUnload(PDRIVER_OBJECT pDriver)
{
UNREFERENCED_PARAMETER(pDriver);
DbgPrint("Goodbye~\n");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING pRegPath)
{
UNREFERENCED_PARAMETER(pRegPath);
pDriver->DriverUnload = DriverUnload;
DbgPrint("Hello Driver!\n");
return STATUS_SUCCESS;
}
然后修改项目配置:
如果编译报错 “error MSB8040: 此项目需要缓解了 Spectre 漏洞的库”,则需要添加单个组件,注意版本要和当前msvc版本一致,我这里是14.27,然后我不需要ARM的,所以只勾了这三个:
如果报错 “error 1297: Device driver does not install on any devices”,就把inf文件下图选中的内容删掉,即可编译成功。
三、运行 WIN7 X64 驱动
把驱动复制到WIN7上,用KMD工具加载:
如果发现Dbgprint没有输出,我的解决方法是修改注册表,在 "HKLM/SYSTEM/CCS/Control/Session Manager/Debug Print Filter“路径下新建一个名为”DEFAULT“的键值,类型为DWORD,值为 8或0xF
四、编译 XP X86 驱动
我以前使用 vs2010 + wdk7600 写过 xp 驱动,今天尝试一下用 vs2019+wdk10。
按照刚才 X64 的套路,修改项目属性,主要就是把 inf 关掉,然后目标平台设置成 WIN7 DESKTOP:
然后就可以编译了:
拿到 xp 试试能不能用,发现是OK的。
五、编译 WIN10 X64 驱动
如果要编译运行WIN10驱动,我这里提供一种方法:
首先要把项目属性的签名设置改成 test sign
目标平台改成win10
然后和WIN7一样的方法,修改注册表打开 DbgPrint 输出:
然后管理员控制台运行这个命令来允许测试签名加载驱动:
bcdedit /set testsigning on
重启电脑后右下角有提示的字样,表明支持测试签名了:
然后就可以了,管理员运行加载程序,就能在 dbgview 看到输出:
六、符号文件环境变量
在物理机设置环境变量,使用IDA和WINDBG时就可以自动从微软服务器上下载符号文件。
_NT_SYMBOL_PATH
SRV*E:\Win10Symbols*http://msdl.microsoft/download/symbols/
更多推荐
vs2019+wdk10开发 xp, win7, win10 驱动
发布评论