觀察Windows的核心模組、資料結構和函數
1, 啟動WinDbg的本地核心調試(File > Kernel Debug… > Local)。
2, 鍵入.symfix c:"symbols設定符號伺服器和用於儲存符號檔案的本地目錄。
3, 鍵入.sympath觀察當前的符號路徑。其結果應該如下所示:
lkd> .sympath
Symbol search path is: SRV*c:"symbols*http://msdl.microsoft.com/download/symbols
4, 鍵入.reload重新載入符號。可能需要較長時間,請耐心等待。
5, 鍵入lm命令列出所有核心模組。尋找HAL,NT等模組,觀察其在記憶體中的起止位置。
6, 鍵入!process 0 0命令列出當前系統內啟動並執行所有進程。
7, 鍵入!process 4顯示系統進程(System)的概況和各個線程。記錄下該進程的進程結構(PROCESS)地址。
lkd> !process 4
Searching for Process with Cid == 4
PROCESS 86fb7660 SessionId: none Cid: 0004 Peb: 00000000 ParentCid: 0000
DirBase: 00039000 ObjectTable: e1001c78 HandleCount: 396.
Image: System
VadRoot 86fae870 Vads 4 Clone 0 Private 3. Modified 124205. Locked 0.
DeviceMap e1005470
8, 通過dt命令(dt nt!_EPROCESS)觀察進程的_EPROCESS結構。
9, 在dt nt!_EPROCESS命令後加上第7步記錄下的地址,顯示系統進程的_EPROCESS結構的各個值。
lkd> dt nt!_EPROCESS 86fb7660
+0x000 Pcb : _KPROCESS
+0x06c ProcessLock : _EX_PUSH_LOCK
10, 鍵入x nt!*命令列出核心檔案(NTOSKRNL)所包含的符號。嘗試使用不同的運算式來選擇顯示某些符號,比如x nt!Dbgk*顯示所有以Dbgk開頭的符號。
11, 關閉WinDbg結束調試。