你好YouTube上，我Langester。在本教程中，我們將學習如何使用WinDbg做一個簡單的驅動程序調試。
讓我們通過設計編寫錯誤代碼開始。
首先，我們定義了一個字符指針變量，並為其分配0給它。
如果該程序是Windows用戶模式的程序，它會被Windows當我們打開它終止。
因為我們的司機在內核模式下運行，當我們載入我們的司機將整個系統崩潰。
指針指向無效地址的問題是很常見的，所以我們需要的時候，我們發展我們的司機要非常小心。
點擊生成 - >生成解決方案來構建我們的項目。
之前我們載入我們的司機，我們要做的第一件事就是加載隨我們的司機我們PDB文件。
在菜單欄中點擊調試 - >打破，打破窗戶進入我們的WinDbg。
單擊文件菜單欄 - >符號文件路徑來加載我們的PDB文件。
在本次對話中，我們添加;在此符號文件路徑的結尾。
我們複製並粘貼我們PDB文件的目錄（驅動程序和PDB是在同一目錄下）
檢查重裝選項並單擊確定
點擊調試 - >去讓我們的虛擬機上運行。
它的時間來加載在VirtualBox中我們錯誤的驅動程序，看看會發生什麼。
我們的司機複製到VirtualBox和使用的驅動程序加載器加載它。
當我們打到起動按鈕，我們會發現一個FATA錯誤信息在WinDbg中彈出。
有很多信息來源的為我們提供了幫助調試我們的驅動程序。
我們可以做什麼這裡打字！分析-v有WinDbg的分析我們。
這個過程可能需要一段時間。
讓我們來看看有什麼信息，我們可以從這些輸出得到。
起初，它給了我們什麼可能導致此問題的一個總體思路。
第一行是錯誤校驗碼（SYSTEM_THREAD_EXCEPTION_NOT_HANDLED），我們需要看看它更詳細的信息網上，我列出了頁面的描述中的鏈接。
在參數部分，我們可以看到ARG1，ARG2，ARG3，ARG4。
這些參數的含義取決於不同的錯誤校驗碼。你可以找到他們在該網頁上的說明。
我們來看看ARG1和ARG2。
在這段視頻中，ARG1是錯誤時拋出的代碼，我們可以在頁面中搜索它的價值（我會列出該網頁的描述中的鏈接）
事實上，它實際上是一個STATUS_XXXX值。例如，在本教程中，我們已經0000005（只有4位字節）。
ARG2是其中代碼引起該錯誤的地址。
在Faulting_ip部分，它表明我們的代碼在錯誤發生的行。
我們也可以看到，它的地址是一樣的ARG2。
這條線基本上意味著我們的驅動器分配到61H的地址其RAX點。
如果您在背景部分中看到RAX，RAX equeals為零，這意味著我們的司機嘗試分配61H為0地址。
回到我們的Visual Studio，我們可以檢查什麼是在第14行。
這是我們需要應對確切的代碼。
這部分顯示了所有這些寄存器的值，我們可以看到獺兔的值是0
在這裡，我們將談論調用堆棧一點點。
我們看它從底部到頂部。
底部一個是所述第一運行，然後將其稱之為第二個。
第二個調用第三個，等等。
這也告訴我們，在hellodriver模塊，在DriverEntry函數（！分割模塊和功能），代碼為0x2c上的偏移會導致錯誤。
接下來，我們看得很清楚的是*字符串='A'（>左）的問題。
你可以看到自己其他信息。
接下來，我們讓我們的虛擬機繼續。
我們的Windows崩潰和自動重啟。
而已。我們已經看到了如何在這個視頻調試一個簡單的驅動程序問題。
WinDBG的是非常複雜的使用和調試是一項艱鉅的任務。
學習WinDbg中超出了本教程，如果你們想了解的WinDbg，請在網上搜索其他教程。
像往常一樣，我希望這部影片會幫助你，並感謝您的收看。