日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows驱动开发环境搭建以及helloworld

發(fā)布時間:2023/12/14 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows驱动开发环境搭建以及helloworld 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 前言
    • 編譯環(huán)境-WDK的安裝
    • 搭建測試驅(qū)動的虛擬機
      • win11虛擬機
      • win10虛擬機
    • 在測試機器上運行驅(qū)動
    • 修改注冊表-顯示調(diào)試信息
    • 上面驅(qū)動代碼含義
    • 測試證書簽名
    • 其他
      • 舊版本的visual studio community下載
      • SC加載驅(qū)動
      • windbg

前言

參考:windows驅(qū)動開發(fā)環(huán)境搭建以及helloworld | qwertwwwe、[已解決]DebugView無法獲取到KDprintEx的信息

搭建驅(qū)動環(huán)境–編寫hello驅(qū)動–安裝測試虛擬機–安裝驅(qū)動


編譯環(huán)境-WDK的安裝

挺難搞。最開始,我使用的時vs2022,搞半天也沒把編譯環(huán)境搭起來。

沒辦法,降到vs2019。

SDK使用的時10.0.19041.0。

到官網(wǎng)下載和SDK版本相近的WDK: 以前的 WDK 版本和其他下載 - Windows drivers | Microsoft Learn

之后,我們參考windows驅(qū)動開發(fā)環(huán)境搭建以及helloworld | qwertwwwe, 創(chuàng)建一個KMDF項目,編譯下面代碼,看能否編譯通過。

// come from: https://github.com/dybb8999/Windows-kernel-security-and-driver-development-CD/blob/master/source/first/first.c #include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("first: Our driver is unloading…\r\n"); }NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) {DbgPrint("first: Hello, my salary!");driver->DriverUnload = DriverUnload;return STATUS_SUCCESS; }


搭建測試驅(qū)動的虛擬機

win11虛擬機

使用virtualbox,搭建win11虛擬機,是要踩坑的。可見:如何在VirtualBox 7.0開啟TPM和EFI安全啟動以在虛擬機中安裝或升級到Windows 11 – Orz小竅門

之后,需要關(guān)閉簽名驗證,win11上,我目前只找到這一種有效的方法:Win11怎么禁用驅(qū)動程序強制簽名? 關(guān)閉Win11驅(qū)動強制簽名的技巧_windows11_Windows系列_操作系統(tǒng)_腳本之家

設(shè)置-恢復(fù)-高級啟動-選擇疑難解答-高級選項-啟動設(shè)置-按鍵盤上的 F7 ,就可以禁用驅(qū)動程序強制簽名了。

(在virtualbox win11中 bios,沒有serurity boot選項。)

win10虛擬機

win10虛擬機常規(guī)安裝即可。

驅(qū)動需要簽名之后,才能加載。日常開發(fā),需要禁用使用測試簽名代碼,可以參考:加載測試簽名代碼 - Windows drivers | Microsoft Learn、windows10 該值受安全引導(dǎo)策略保護,無法進行修改或刪除。禁用驅(qū)動程序強制簽名_wangan094的博客-CSDN博客

# admin打開powershell,執(zhí)行下面語句 bcdedit /set testsigning on

執(zhí)行上面語句之后,需要重啟。重啟之后,可以看到這樣的水印。


上面這樣改過。可以啟動測試簽名的驅(qū)動。驅(qū)動如果沒有使用測試簽名,還是啟動不了。所以我們下面這樣“禁用驅(qū)動程序強制簽名”


在測試機器上運行驅(qū)動

我們需要點輔助工具。

  • 加載驅(qū)動的工具:InstDrv,可以在這里下載,[原創(chuàng)]驅(qū)動加載工具(InstDrv - V1.2中文版)

  • 監(jiān)視本地系統(tǒng)上的調(diào)試輸出:DebugView,可以在這里下載, DebugView - Sysinternals | Microsoft Learn

我并沒有看到輸出,應(yīng)該是和輸出信息的level有關(guān),暫時不管它:windows - DebugView doesn't capture KdPrint output - Stack Overflow、驅(qū)動中打印消息以及過濾機制_一如當初的博客-CSDN博客、[原]你知道怎么使用DebugView查看內(nèi)核調(diào)試信息嗎? - BCN - 博客園

雖然信息沒打印,但是驅(qū)動確實被安裝了,我們可以使用driverquery /v | findstr xxx看到輸出信息。


修改注冊表-顯示調(diào)試信息

我們修改下面的注冊表項。

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Debug Print Filter] DEFAULT=dword:0000000f


此時,我們再按照上一節(jié)的過程,安裝驅(qū)動,并啟動。(只有啟動后才能看到輸出)


上面驅(qū)動代碼含義

上面的驅(qū)動代碼很短,主要是用來驗證環(huán)境的安裝情況。我們簡單的過一遍。

ntddk.h是一個內(nèi)核(接口)頭文件。驅(qū)動程序都需要需要特定的例程。

DriverEntry是在加載驅(qū)動程序后調(diào)用的第一個例程,負責(zé)初始化驅(qū)動程序。DriverUnload執(zhí)行在系統(tǒng)卸載驅(qū)動程序之前所需的任何操作。

dbgPrint向內(nèi)核調(diào)試器發(fā)送消息。


測試證書簽名

在上面安裝虛擬機的小節(jié),我們在啟動的時候禁用了驅(qū)動的簽名驗證。但是,這個設(shè)置,在下次重啟的時候會失效,導(dǎo)致驅(qū)動啟動失敗,而每次設(shè)置又比較麻煩。

所以,我們給驅(qū)動進行簽名。(這里不贅述簽名等概念,因為我之前整理過:密碼學(xué)簡述)

PS: 虛擬機還是需要執(zhí)行下面命令,并重啟。

bcdedit /set testsigning on

參考:Windows驅(qū)動開發(fā)–測試證書簽名、測試簽名 - windows文檔、makecert.exe missing in windows 10, how to get it and use it、windows下查看系統(tǒng)證書、SignTool.exe(簽名工具)

# 生成證書 > MakeCert –r –pe –ss PrivateCertStore –n CN=www.da1234cao.tk rg.cer# 將證書添加到本地(以信任) > CertMgr -add rg.cer -s -r localMachine root CertMgr Succeeded# 給驅(qū)動簽名 > Signtool sign /v /s PrivateCertStore /n www.da1234cao.tk /t http://timestamp.digicert.com xxx\driver-logfile.sys The following certificate was selected:Issued to: www.da1234cao.tkIssued by: www.da1234cao.tkExpires: Sun Jan 01 07:59:59 2040SHA1 hash: FB2249F73FE587DFB619E58319D5D3D8C89D39CFDone Adding Additional Store Successfully signed: xxx\driver-logfile.sysNumber of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0

這個過程,我不知道咋腳本化。每次使用VS生成驅(qū)動后,還得手動簽名,有點麻煩。VS屏蔽編譯鏈接過程,非常讓人討厭。


其他

舊版本的visual studio community下載

如果,因為一些原因,我們想下載舊版本的visiual studio,到官網(wǎng)我們會發(fā)現(xiàn),不再提供舊版本的Community版本:Visual Studio 較舊的下載 - 2019、2017、2015 和以前的版本

我們可以找見這個答案:How to download Visual Studio Community Edition 2015 (not 2017) - Stack Overflow

這個答案,我回答不了。目前一個比較好的去出,是在wdk界面下載舊版本的Community:以前的 WDK 版本和其他下載 - Windows drivers | Microsoft Learn


SC加載驅(qū)動

其實,圖形化的加載驅(qū)動工具并不好找,在網(wǎng)上。我們可以使用windows系統(tǒng)提供的命令來加載驅(qū)動:使用Windows 自帶的 sc 工具操作驅(qū)動程序、sc.exe創(chuàng)建

# 好像不大好使 sc.exe create test type=kernel start=demand binpath=C:\Users\dacao\Desktop\driver-logfile.sys sc.exe start test sc.exe stop test sc.exe delete test

windbg

不太好搞定。

使用 windbg + virtualbox 搭建雙機內(nèi)核調(diào)試環(huán)境

總結(jié)

以上是生活随笔為你收集整理的windows驱动开发环境搭建以及helloworld的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。