環(huán)境
- win10 x64
- vmware workstation 14 pro
- win 7 旗艦版 x64 虛擬機
- visual studio2017 社區(qū)版
- WDK 10
- virtual KD3
- DrvInst.exe
- DbgView.exe
安裝visual studio2017
在微軟的官網(wǎng)下載visual studio2017的安裝文件
下載地址為
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
安裝過程中 工作負(fù)載 勾選 使用C++桌面開發(fā)
安裝成功后,需要在vs2017社區(qū)版中登陸微軟賬號,不然只能用30天
安裝 wdk 10
在微軟的官網(wǎng)上下載wdk安裝包
注意vs2017中SDK和wdk的安裝版本要一致,不然會導(dǎo)致驅(qū)動程序編譯失敗
WDK安裝完成后 會自動安裝wdk的vs擴展
檢查wdk和win10 SDK的版本是否一致
打開windows控制面板中的卸載程序,查看windows SDK 和 windows Driver Kits的版本號是否一致,如果不一致的話,需要安裝與wdk版本一致的sdk,在VS的
在開始菜單中找到 visual studio installer
點擊修改
在 單個組件 SDK中勾選與WDK版本一致的SDK安裝即可
安裝vassistx插件
VAssistX是visusal studio的一個插件,可以實現(xiàn)代碼高亮、自動折疊等功能
下載地址
鏈接: https://pan.baidu.com/s/1MN_Bs0qf6XdbYpJ0y_KPbw 密碼: ykr8
安裝文件中有一個VA_X.dll,替換下面這個文件,即可完成破解
C:\Users\用戶名\AppData\Local\Microsoft\VisualStudio\15.0_e517f3de\Extensions\tvelb2zk.4nn\VA_X.dll
安裝并破解成功后,打開visual studio2017,上面的菜單欄會有一個VAssitX的菜單項
使用VS2017創(chuàng)建和編譯第一個驅(qū)動程序
在vs中創(chuàng)建一個新的工程,選擇Empty WDM Driver模板,如下圖所示
添加一個c文件
添加一個最簡單的驅(qū)動驅(qū)動
#include<ntddk.h>
VOID DriverUnload(PDRIVER_OBJECT drivrObject);
NTSTATUS DriverEntry(PDRIVER_OBJECT driverObject,
PUNICODE_STRING regPath)
{
KdPrint(("helloworld"));
KdBreakPoint();//設(shè)置一個斷點
driverObject->DriverUnload = DriverUnload;//設(shè)置驅(qū)動卸載的回調(diào)函數(shù)
return STATUS_SUCCESS;
}
//驅(qū)動的卸載函數(shù)
VOID DriverUnload(PDRIVER_OBJECT drivrObject)
{
KdPrint(("DriverUnload\n"));
}
在項目的屬性中作如下的設(shè)置 如下圖所示
編譯,如下圖所示
配置雙機調(diào)試環(huán)境
原來一般使用串口來調(diào)試虛擬機中的驅(qū)動程序,但是串口的速率比較低,當(dāng)使用windbg.exe單步調(diào)試時比較卡頓,使用virtualKD可以破解串口速率的限制
在virtualKD官網(wǎng)上下載,地址為https://sysprogs.com/legacy/virtualkd/download/
下載完成,雙擊解壓

解壓 后的目錄結(jié)構(gòu)如下圖
將target拷貝到虛擬機中安裝,其中有一個vminstall.exe程序,一路點下一步即可,重啟虛擬機
這里使用的虛擬機系統(tǒng)為windows7 x64 旗艦版
重啟虛擬機,選擇 windows7[VirtualKD][啟用調(diào)試程序]的啟動項
在宿主機上啟動vmmon.exe,設(shè)置windbg.exe的路徑,啟動調(diào)試器,會自己打開windbg
將驅(qū)動程序拷貝至虛擬機中,使用DrvIns.exe安裝驅(qū)動,使用dbgview.exe查看驅(qū)動程序的輸出結(jié)果。
啟動驅(qū)動程序,會在windbg中看到斷點,輸入g將繼續(xù)運行
windbg的使用可參考https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/getting-started-with-windbg