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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows编程—Windows驱动开发环境搭建

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

文章目錄

  • 前言
  • 步驟
    • 步驟一
    • 步驟二
    • 步驟三
    • 連接測試
    • 步驟四
    • 步驟五
  • 總結(jié)

前言

作為一個編寫Windows程序的開發(fā)人員,對Windows驅(qū)動開發(fā) 并非必需要掌握,但是掌握 Windows驅(qū)動開發(fā)對Windows程序開發(fā)人員卻有極大的好處。一個直觀的感受 程序操作權(quán)限更大了,因?yàn)樘幵趦?nèi)核層了嘛。應(yīng)該可以寫更厲害的外掛,普通Windows程序?qū)憘€輔助完全是沒問題的,但是涉及到數(shù)據(jù)修改突破游戲程序的一些限制 必須用更高權(quán)限的內(nèi)核驅(qū)動了。

開始學(xué)習(xí)Windows驅(qū)動開發(fā),第一步當(dāng)然是環(huán)境搭建了。因?yàn)楣P者也在驅(qū)動環(huán)境搭建上也吃過虧,所以這里進(jìn)行記錄和分享,當(dāng)然這里也是集眾家之長了。

其實(shí)筆者在一開始學(xué)Windows程序開發(fā)的時候 搭過一次驅(qū)動開發(fā)環(huán)境,當(dāng)時直接用vs2015還是vs2017 忘了,使用WDK10,搭了好幾周 都沒搭成功,最后 無奈放棄。總結(jié)下失敗原因,WDK10的版本眾多 而且還要和當(dāng)前 操作系統(tǒng)一一對應(yīng),而且win10 又經(jīng)常更新,當(dāng)時調(diào)試機(jī)也是用的win10版本,筆者電腦配置也不行 開win10虛擬機(jī)也吃力。

這里筆者建議初學(xué)者 不要一開始 就WDK10 和 VS集成開發(fā) 調(diào)試。先使用windbg 把雙機(jī)調(diào)試搞起來了 再說。其實(shí)vs集成開發(fā)調(diào)試 也是調(diào)用的windbg。這里順帶說一下 WDK版本和操作系統(tǒng)版本關(guān)系。WDK 7600_1 在主機(jī)最低Win7安裝,編譯出來的驅(qū)動 最低支持到Win XP,VS未集成。WDK8.1 在主機(jī)最低Win8上安裝,編譯出來的驅(qū)動最低支持Win Visa,VS2013開始集成。WDK 10具體版本 就具體細(xì)化了 編譯出來的驅(qū)動最低支持到Win7。基本上做Win開發(fā) 都是以 Win XP作為 支持的最后底線,所以一般 我們用WDK7即可了

筆者這里環(huán)境是 主機(jī)Win10 + WDK7600_1 + 調(diào)試機(jī)Win XP Sp3

步驟

步驟一

在win10上安裝 WDK7600_1,將GRMWDK_EN_7600_1.ISO 解壓安裝即可。百度云下載鏈接

鏈接:https://pan.baidu.com/s/1ldYMIIn6837iq2IYUpNSqg
提取碼:3lex
或者 網(wǎng)上搜索,都可以找到。

步驟二

使用VMware安裝Win XP Sp3虛擬機(jī),安裝完畢后,在C:\boot.ini中添加調(diào)試模式啟動選項(xiàng)。添加后如下:

[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

此時如果重啟,顯示頁面應(yīng)該如下,說明boot.ini配置好了。

隨后添加串行端口。用于主機(jī)與調(diào)試機(jī)通信使用的。

步驟三

配置WinDbg

File -> Kernel Debugging -> COM 進(jìn)行如下配置,端口和波特率要和 虛擬機(jī)配置一樣。

也可以 將windbg.exe 發(fā)送到桌面快捷方式,在快捷方式 -> 屬性-> 快捷方式 -> 目標(biāo) 空格后添加如下參數(shù),這樣以后 雙擊 就開始會連接調(diào)試機(jī)。

// 目標(biāo)程序后面 添加如下參數(shù)-b -k com:port=\\.\pipe\com_1,baud=115200,pipe // 下面是筆者的目標(biāo) D:\WinDDK\7600.16385.1\Debuggers\windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

連接測試

在步驟二、三 完全配置好了就可以 測試 雙機(jī)調(diào)試 是否連通通了,重啟 Win Xp Sp3,可以在啟動項(xiàng) 那里來回切,這樣就停在那里了。此時 調(diào)試機(jī) 的串口已經(jīng)啟動了,此時可以進(jìn)行步驟三 進(jìn)行連接了。

此時可以點(diǎn)擊 WinXp 調(diào)試啟動了。

此時WinDbg如下:

此時,虛擬機(jī)也會被暫停,在kd> g 繼續(xù),測試虛擬機(jī)正常啟動。

在虛擬機(jī)中可以加載驅(qū)動進(jìn)行測試,看windbg是否有輸出,調(diào)試機(jī) 連接 windbg 調(diào)試,請看步驟五。

步驟四

配置系統(tǒng)內(nèi)核符號表。筆者用的Win XP Sp3 x86版本,下的符號表 WindowsXP-KB936929-SP3-x86-symbols-full-ENU.exe 這個,本來微軟可以在線獲取符號表,筆者自己測試 貌似沒起效果 沒有進(jìn)行在線獲取。百度云鏈接:

鏈接:https://pan.baidu.com/s/1ABA8qcealpBKr_Op2QF_Pw
提取碼:wmi3

筆者這里選擇的安裝目錄時在 C:\symbols。這里一定要注意,我們配置符號表路徑 不能直接是根目錄,一定得 具體到下面的子目錄 才是 pdb路徑。

在 系統(tǒng)環(huán)境路徑配置如下:

_NT_SYMBOL_PATH F:\Book\Windows\Windows內(nèi)核安全與驅(qū)動開發(fā)隨書源代碼\first\objchk_wxp_x86\i386;C:\Symbols\acm;C:\Symbols\ax;C:\Symbols\cnv;C:\Symbols\com;C:\Symbols\cpl;C:\Symbols\dic;C:\Symbols\dll;C:\Symbols\drv;C:\Symbols\ds;C:\Symbols\exe;C:\Symbols\iec;C:\Symbols\ime;C:\Symbols\ocx;C:\Symbols\scr;C:\Symbols\sys;C:\Symbols\tpl;C:\Symbols\tsp;C:\Symbols\wpc;SRV*C:\Symbols_cache*http://msdl.microsoft.com/download/symbols;

筆者這里是 把測試的sys驅(qū)動的 pdb路徑配置上,然后再才是本地Win XP Sp3系統(tǒng)符號表,最后再才是 在線獲取符號表配置(筆者這里測試貌似不起效果)。

配置完了后,可以重寫進(jìn)行連接測試,走到 kd> 命令行處,或者如果在運(yùn)行時直接 Debug -> Break 也會進(jìn)行中斷到 kd> 命令行處,我們進(jìn)行一些簡單測試。

// 1、查看設(shè)置的符號表路徑,如果查找出來不是簽名配置的路徑,可以在WinDbg->File->Symbol File Path 將路徑路徑拷貝進(jìn)入勾上Reload框 然后點(diǎn)擊OK。 就會重新加載符號文件路徑了。 kd> .sympath // 2、查看相應(yīng)的模塊信息,如果能查找系統(tǒng)模塊pdb說明 我們配置系統(tǒng)符號表沒問題 kd> !lmi ntkrpamp

步驟五

我們準(zhǔn)備一個 測試用的sys,看能否進(jìn)入斷點(diǎn)調(diào)試。我們只需要找一個可以加載裝載驅(qū)動的軟件就可以了。這里筆者用 Driver Monitor軟件來加載驅(qū)動。

這里準(zhǔn)備一個sys文件,這里筆者直接用<< Windows內(nèi)核安全與驅(qū)動開發(fā) >> 隨書源代碼中的 first例子。使用 x86 Free Build Environment(安裝好wdk后,在啟動菜單可以找到) 進(jìn)行編譯,cd 切換到first.sys目錄,然后build。會生成如下的 first.pdb和first.sys。

first.c

/// /// @file first.c /// @author crazy_chu /// @date2008-11-1 /// #include <ntddk.h>// 提供一個Unload函數(shù)只是為了 VOID DriverUnload(PDRIVER_OBJECT driver) {// 但是實(shí)際上我們什么都不做,只打印一句話:DbgPrint("first: Our driver is unloading…\r\n"); }// DriverEntry,入口函數(shù)。相當(dāng)于main。 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) { #if DBG_asm int 3 #endif// 這是我們的內(nèi)核模塊的入口,可以在這里寫入我們想寫的東西。// 我在這里打印一句話。因?yàn)椤盚ello,world” 常常被高手恥笑,所以// 我們打印一點(diǎn)別的。DbgPrint("first: Hello, my salary!\r\n");// 設(shè)置一個卸載函數(shù)便于這個函數(shù)能退出。driver->DriverUnload = DriverUnload;return STATUS_SUCCESS; }

這個路徑 要添加到 環(huán)境變量_NT_SYMBOL_PATH 或者 WDK中的 sympath中去。

我們把first.sys 拷貝到 虛擬機(jī)中,然后使用 monitor,File ->Open Driver first.sys ,然后再File->Start Driver 這時會去裝載驅(qū)動,然后再File->Stop Driver 這時會去 卸載驅(qū)動。




總結(jié)

作為初學(xué)者,建議先把 windbg雙機(jī)調(diào)試模式 搞起來這才是王道,vs集成驅(qū)動開發(fā)可以后面再搞。筆者認(rèn)為 win10 + wdk7 + win xp sp3 雙機(jī)調(diào)試也是最省配置的。

總結(jié)

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

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