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