vs2019+wdk10开发 xp, win7, win10 驱动
一、安裝WDK10
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk
首先下載wdk10,并安裝,安裝過程中會(huì)提示你當(dāng)前sdk版本和wdk不匹配,所以還需要先把sdk裝上。這些步驟比較簡單略過了,記得安裝wdk時(shí)勾上安裝插件的選項(xiàng),如下圖:
二、編寫 WIN7 X64 驅(qū)動(dòng)
wdk10裝好之后,可以直接開發(fā)win7的驅(qū)動(dòng),下面構(gòu)建一個(gè)空WDM驅(qū)動(dòng)項(xiàng)目:
#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; }然后修改項(xiàng)目配置:
如果編譯報(bào)錯(cuò) “error MSB8040: 此項(xiàng)目需要緩解了 Spectre 漏洞的庫”,則需要添加單個(gè)組件,注意版本要和當(dāng)前msvc版本一致,我這里是14.27,然后我不需要ARM的,所以只勾了這三個(gè):
如果報(bào)錯(cuò) “error 1297: Device driver does not install on any devices”,就把inf文件下圖選中的內(nèi)容刪掉,即可編譯成功。
三、運(yùn)行 WIN7 X64 驅(qū)動(dòng)
把驅(qū)動(dòng)復(fù)制到WIN7上,用KMD工具加載:
如果發(fā)現(xiàn)Dbgprint沒有輸出,我的解決方法是修改注冊表,在 "HKLM/SYSTEM/CCS/Control/Session Manager/Debug Print Filter“路徑下新建一個(gè)名為”DEFAULT“的鍵值,類型為DWORD,值為 8或0xF
四、編譯 XP X86 驅(qū)動(dòng)
我以前使用 vs2010 + wdk7600 寫過 xp 驅(qū)動(dòng),今天嘗試一下用 vs2019+wdk10。
按照剛才 X64 的套路,修改項(xiàng)目屬性,主要就是把 inf 關(guān)掉,然后目標(biāo)平臺(tái)設(shè)置成 WIN7 DESKTOP:
然后就可以編譯了:
拿到 xp 試試能不能用,發(fā)現(xiàn)是OK的。
五、編譯 WIN10 X64 驅(qū)動(dòng)
如果要編譯運(yùn)行WIN10驅(qū)動(dòng),我這里提供一種方法:
首先要把項(xiàng)目屬性的簽名設(shè)置改成 test sign
目標(biāo)平臺(tái)改成win10
然后和WIN7一樣的方法,修改注冊表打開 DbgPrint 輸出:
然后管理員控制臺(tái)運(yùn)行這個(gè)命令來允許測試簽名加載驅(qū)動(dòng):
bcdedit /set testsigning on
重啟電腦后右下角有提示的字樣,表明支持測試簽名了:
然后就可以了,管理員運(yùn)行加載程序,就能在 dbgview 看到輸出:
六、符號(hào)文件環(huán)境變量
在物理機(jī)設(shè)置環(huán)境變量,使用IDA和WINDBG時(shí)就可以自動(dòng)從微軟服務(wù)器上下載符號(hào)文件。
_NT_SYMBOL_PATH SRV*E:\Win10Symbols*http://msdl.microsoft.com/download/symbols/總結(jié)
以上是生活随笔為你收集整理的vs2019+wdk10开发 xp, win7, win10 驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (75)内核APC执行过程,分析 KiD
- 下一篇: WIN10 关闭驱动签名