1. 程式人生 > >windbg除錯驅動程式

windbg除錯驅動程式

不正確之處歡迎指正,高手勿噴~

配置windbg路徑

Symbol path:SRV*F:\Windows\symbolxp3*http://msdl.microsoft.com/download/symbols;C:\Users\bojay\Desktop\first\objchk_wxp_x86\i386
Source path:C:\Users\bojay\Desktop\first
Image path:C:\Users\bojay\Desktop\first\objchk_wxp_x86\i386

【注意】windbg路徑要根據個人具體情況而定,不能複製!

進入實操

0x00>>將first.sys安裝到虛擬機器Windows XP系統,啟動windbg,虛擬機器立刻不能動,點選windbg F5,回到虛擬機器啟動驅動程式,windbg馬上跳到int3斷點處,如下:

 

0x01>>設定兩個斷點F9,開始單步除錯,執行到列印輸出那行程式碼後,檢視windbg輸出:

 

0x02>>F5,回到虛擬機器

 

0x03>>停止,檢視windbg輸出

 

#include <ntddk.h>
    
// 提供一個Unload函式只是為了
VOID DriverUnload(PDRIVER_OBJECT driver)
{
    
// 但是實際上我們什麼都不做,只打印一句話: DbgPrint("first: Our driver is unloading…\r\n"); } // DriverEntry,入口函式。相當於main。 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) { #if DBG _asm int 3 #endif // 這是我們的核心模組的入口,可以在這裡寫入我們想寫的東西。 DbgPrint("first: Hello, my salary!"); // 設定一個解除安裝函式便於這個函式能退出。
driver->DriverUnload = DriverUnload; return STATUS_SUCCESS; }

 

參考書籍:

Windows核心安全與驅動開發