本文將詳細介紹如何使用 VToolsD 開發一個最基本的動態載入 VxD,並搭配 SoftIce 進行原始碼級除錯。VxD(Virtual Device Driver)是 Windows 9x 系統下的虛擬裝置驅動程式,掌握其開發流程對於系統級程式設計具有重要意義。
VToolsD 套件中最關鍵的開發工具是 QuickVxD,它能自動產生 VxD 原始碼框架,並提供豐富的特性選項:
我們選擇建立動態載入、基於C 語言的 VxD 框架,主要考量如下:
VxDLoad 工具即可卸載或重新載入記憶體中的 VxD,無須重新啟動電腦,大幅提升除錯效率按照 QuickVxD 精靈的步驟(對應圖 1~圖 4)進行選擇,點擊 Generate Now 按鈕即可獲得完整的原始碼框架。
假設您已按照前文設定好 VToolsD 編譯環境,在 DOS 提示字元下輸入指令:
nmake -f myfirst.mak
編譯成功後,當前目錄下會產生 myfirst.vxd。若未產生,請檢查編譯環境配置。
使用 VxDLoad 工具載入 myfirst.vxd(參見圖 5),點擊 Load 按鈕,出現 "VxD load successfully" 訊息框即表示載入成功。
在 SoftIce 中依序進行以下操作:
myfirst.vxd按下 Ctrl+D 進入 SoftIce 環境(需先安裝 SoftIce),輸入指令:
:file myfirst.c
此時 SoftIce 中將顯示 myfirst.c 的原始碼,即可進行原始碼級除錯,包含設定中斷點、單步執行、檢視變數等操作。
| 工具 | 用途 |
|---|---|
| QuickVxD | 自動產生 VxD 框架程式碼 |
| VxDLoad | 動態載入/卸載 VxD,免重開機 |
| SoftIce | 系統級除錯器,支援原始碼級除錯 |
| NMAKE | Microsoft 建構工具,編譯連結 VxD |
掌握此流程後,您即可開始進行更複雜的 VxD 開發,如硬體存取、系統服務攔截、記憶體管理等進階主題。