看雪學院,笨笨翻譯《使用windbg核心除錯》。很有用的資料,由於太長,加上很多,偷懶,留個鏈結在這裡。這裡簡要做一些我測試時候的筆記:
首先你要配置好測試環境:參考vmware+windgb+win7 核心驅動除錯
在你的主機上配置symbols
接著檢查是否已經載入sys.dbg,命令為: kd> !lmi ndislwf
loaded module info: [nt]
module: ntoskrnl base address: 80a02000
symbol type: pdb – symbols loaded successfully from symbol server.
d:\debugsymbols\ndislwf.pdb\ec9b7590d1bb47a6a6d5383538c2b31a1\ntoskrnl.pdb
compiler: c – front end [13.10 bld 2179] – back end [13.10 bld 2190] load report: public symbols
d:\debugsymbols\ndislwf.pdb\ec9b7590d1bb47a6a6d5383538c2b31a1\ndislwf.pdb
接著如果出現如上的結果,表明可以手動設定斷點,否則(個人經驗總是不能設定)。假設在ndislwf 的driverentry 設定斷點。在啟動驅動之前,中斷在windbg的命令視窗,輸入:bu ndislwf!driverentry
接下來開始安裝測試驅動。若執行到driverentry該函式,就會停下來,並且會在**框中對應的**中用紅色標誌,然後按f10可以單步除錯。
如果檢視已經設定哪些斷點: kd> bl
0 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 123] 0001 (0001) ndislwf!driverentry
1 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 338] 0001 (0001) ndislwf!sioctldevicecontrol+0×103
注意兩件事: 每個斷點都有乙個號碼並且顯示出斷點狀態,「e」是「enabled」,而「d」是「disabled」。假設你希望臨時停止使用某個斷點。bd (「disable breakpoint」) 將會完成它。你只需指定斷點號碼:
kd> bd 1
kd> bl
0 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 123] 0001 (0001) ndislwf!driverentry
1 d [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 338] 0001 (0001) ndislwf!sioctldevicecontrol+0×103 ·
相似的方法,永久移除斷點號碼,使用bc 1 (「clear breakpoint」)。現在該斷點將會從斷點列表中消除。
假設你希望臨時停止使用某 個斷點。bd(「disable breakpoint」) 將會完成它。你只需指定斷點號碼:
kd> bd 1
kd> bl
0 e [d:\winddk\3790\src\general\ioctl\sys\sioctl.c @ 123] 0001 (0001) sioctl!driverentry
1 d [d:\winddk\3790\src\general\ioctl\sys\sioctl.c @ 338] 0001 (0001) sioctl!sioctldevicecontrol+0×103
就先寫這麼寫。怕到時候測試又忘記了。
使用windbg進行核心除錯
1.因為核心除錯涉及到的是windows系統,所以只能在windows上執行,首先安裝xp虛擬機器 2.然後配置boot.ini檔案,由於boot.ini檔案在xp系統中是被隱藏的,所以需要先取消xp的隱藏資料夾選項,具體步驟 1 開啟的 我的電腦選項 選擇 工具 中的 資料夾選項 2 開啟之後選擇...
Windbg除錯核心驅動方法
一般說來,調速驅動程式分為兩種 1.存在pdb檔案的除錯 這裡的pdb檔案其實就是除錯符號檔案,假如我們除錯的這樣的檔案,我們可以再windbg中使用 bp 驅動名 driverentry,這個時候當載入驅動的時候,程式就會斷在入口了。2.沒有pdb檔案的除錯 在除錯別人的驅動程式時,也就是自己只有...
Windbg除錯核心驅動方法1
一般說來,調速驅動程式分為兩種 1.存在pdb檔案的除錯 這裡的pdb檔案其實就是除錯符號檔案,假如我們除錯的這樣的檔案,我們可以再windbg中使用 bp 驅動名 driverentry,這個時候當載入驅動的時候,程式就會斷在入口了。2.沒有pdb檔案的除錯 在除錯別人的驅動程式時,也就是自己只有...