WDM學習與Windbg核心除錯系列(一)

本文重點如下;下載安裝WDK、WDK重點提示、編譯範例程式、編輯範例程式。事先聲明個人Host(Debugger 註1)的作業系統是32位元Win XP,WDK是7.1.0,Target(Debuggee)則是32位元Win 7,往後的操作說明均在此環境下,不再贅述。


(一)下載安裝WDK:
1.至下列網址(WDK)選擇適合的WDK版本下載。Win XP及Win 7選WDK  7.1.0,Win 8選WDK   8,Win  8.1選WDK  8.1 Update(注意!Win 8.1安裝之前需先安裝Visual Studio 2013)。

2.安裝後至「系統內容」->「環境變數」檢查相關變數有無建立,若沒建立則自行手動建立。      
















3.如果安裝WDK的主機是64位元,安裝程式預設會安裝64位元的Debuggers檔案。未來若有32位元電腦除錯的機會,需手動從安裝光碟中執行「dbg_x86.msi」安裝32位元Windbg。



(二)WDK重點提示:
1.安裝後的WDK資料夾下有一些內容值得我們關注。首先可在「開始」->「程式集」底下開啟相關文件說明。






2.或在 WDK資料夾下搜尋「*.chm」檔,其中「debugger.chm」是除錯器(Windbg、KD、CDB、NTSD)的說明文件,「WDKDocs_12112009.chm」是講解驅動程式開發、測試、發佈的說明文件。可將這兩個檔案放置在桌面上隨時翻閱查找。















3.「WDKDocs_12112009.chm」文件中有說明WDK各個資料夾的功用。常用的有「tools」、「src」。前者放的是開發、除錯、驗證工具,後者放的是Driver範例程式。















4.最後在WDK資料夾下搜尋「*.htm」檔。可以發現「tools」資料夾下的「ToolIndex.htm」列出了工具的位置與功能描述。「src」資料夾下的「toaster」專案則給出了完整的Windows  Driver架構範例(可閱讀該readme.htm檔說明),未來本系列文章均以toaster範例當說明。
















(三)編譯範例程式:
1.將WDK「src」下的toaster範例取出,另存至新「Toaster」資料夾,供未來練習使用。





2.開啟相關的Build Environment。






3.在CLI中移至相關資料夾後,執行「build -ceZg」即可得到driver執行檔。










注意;編譯後若產生「err」或「wrn」副檔名的檔案,需詳看其內容;確認發生何種錯誤或警告。一般來說常見的有U1087及C4335兩種錯誤碼。前者是資料夾有空格或有中文字母造成的錯誤,後者則以Visual  C++重新存檔後即可解決。

若出現錯誤;將錯誤碼丟上google查詢,均能找到相應的解答。另外「build  /?」會顯示完整的build指令說明,可詳加利用。

4.未來若有自己寫的新專案需要build driver,只需將sample中的makefile、sources拷貝至新專案資料夾中。makefile檔案內容維持不動,參考sample中的sources檔案內容,針對自己專案需求進行修改即可build成功,非常容易 。

5.sources檔案中需修改的項目,一般有TARGETNAME、TARGETTYPE、 TARGETLIBS、TARGETPATH、 INCLUDES、 SOURCES,這些均可參閱WDK sample進行修改。












(四)編輯範例程式:
1.driver一般以文字編輯器編輯即可(如;記事本、UltraEdit),但若有Visual  C++則可開啟一空專案,將相關檔案匯入進行編輯,對熟悉Visual C++的開發者來說會方便許多。底下以Visul C++ 2008示範相關步驟。

(1)開新專案















(2)選空專案
















(3)加入「.h」檔








(4)加入「.c」檔








(5)完成















以上是簡單的專案建立、編譯、編輯的說明,下一篇文章將討論driver除錯的議題。

註1:Debugger簡單講就是執行Windbg的電腦,又稱Host。Debuggee則是待除錯的電腦或是VM(虛擬機),又稱Target。

沒有留言:

張貼留言