????? 放假回家就下定決心要把windbg搞定 否則以后的內核之路該咋走啊~呵呵 今天就網上零零碎碎的記了些命令用法? 看了別人的調試教程
個人總結下
----------------------------------------------------------------------------
!drvobj 你的驅動對象 [標志位]
說明:這個指令可以查看驅動對象的具體信息 我們知道每個驅動程序在內核中都會對應一個驅動對象的結構,其實上面所說的驅動對象就是你的驅動名字,比如我要找aynet.sys這個驅動程序的驅動對象結構,那么我就!drvobj aynet 就好啦~
標志位是用來告訴windbg具體要顯示什么內容的,標志位可以組合使用
- Bit 0 (0x1)
- 顯示所有跟這個驅動對象相關聯的設備對象信息
- Bit 1 (0x2)
- 顯示所有跟這個驅動想關的派遣例程信息
- Bit 2 (0x4)
- 顯示這個驅動對象的詳細信息 (需要標志位0)
- ps: !object 可以查看對象的詳細信息 比如該內核對象是什么內核對象(文件,進程等)
- 類似用法還有!handle(就是!后面跟結構名)等等
- ----------------------------------------------------------------------------
dt name
說明:dt用來查看本地|全局|結構變量內容的 , name是指你的變量類型是什么,你要看_DEVICE_OBJECT這個結構變量就直接打 dt _DEVICE_OBJECT? 查看變量就直接輸變量名
----------------------------------------------------------------------------
下面說說下斷點的指令
bp 地址
在地址處下斷點 也可以是函數名(其實函數名就對應著地址)
打個比方bp aynet!DriverEntry 說明在aynet這個驅動程序的driverentry函數處下斷 也就是程序一執行到這里windbg就自動斷下來了
還有個bu指令 延遲下斷點 格式跟bp差不多
bm 匹配值
bm指令用于匹配模式下斷點 比如說bm aynet!Driver* 可以把aynet驅動下所有跟Driver* 模式匹配的函數斷下
但是注意~需要符號表的支持ba 變量名
可以對內存訪問下斷點 比如說你程序里有個aynet驅動程序a變量,總被莫名其妙的修改了,那么你可以設置 ba aynet!a ,當這個a值被修改的時候就可以被windbg斷下來了
還有其他常用命令比如
BL(List)列舉斷點,BC(Clear)清除斷點,BE(Enable)啟用斷點,BD(Disable)禁止斷點
這些很簡單 就不累述了
----------------------------------------------------------------------------
注:一下指令區分大小
顯示內存數據相關指令
格式:d[*] 變量名/地址
da--asc字符顯示
db--byte&asc字符顯示
dc--雙字節&asc字符顯示
dd--雙字節變量顯示
dD--雙精浮點數顯示
df--單精浮點數顯示
dp--四字節數值顯示
du--unicode字符顯示
dw--字符(2個字節)顯示
dW--字符和asc字符顯示
dyb--二進制顯示
dyd--二進制和雙字節顯示
舉個例子:(注:xx是變量名 )
kd> dd xx????? //雙字節顯示(即16進制)
8055b260? 610f0f64 00000002 00000000 00000000
8055b270? 00000000 00000000 00000000 00000000
8055b280? 00000000 00000000 00000000 00000000
8055b290? 00000000 00000000 00000000 00000000
8055b2a0? 00000000 00000000 00000000 00000000
8055b2b0? 00000000 00000000 00000000 00000000
8055b2c0? 00000000 00000000 00000000 00000000
8055b2d0? 00000000 00000000 00000000 00000000
kd> da xx? //asc字符顯示
8055b260? "`."
kd> du xx? //unicode字符顯示
8055b260? "..."
附加:
dv
查看本地變量用~
看內存內容的時候就會用到這個命令了~呵呵
----------------------------------------------------------------------------
今天就學了這么多
剩下的明天在看 呵呵
下次要說的內容是
堆棧顯示指令kb , kp, kP , kv
反匯編指令 u,uf
跟蹤指令 T,TA,TB,TC
執行相關指令 P,PA,PC
跟蹤查看指令 WT
先記下來~省的我忘了~
要調試也就大概就用到這些命令了吧 以后就開始記我的調試過程了~