2.斷點
斷點之於除錯當然是非常重要的
常用命令:
bp [address]or[symbol] 在指定位址下斷
可以使用位址或符號,如
bp 80561259(windbg預設使用16進製制)
bp mydriver!getkernelpath
bp mydriver!getkernelpath+0x12
bp [address] /p eprocess 僅當當前程序為eprocess時才中斷
這個很常用,比如你bp nt!ntterminateprocess,但是只想在某一程序觸發此斷點時才斷下來,那就加上這個引數吧,因為核心中的**是各個程序共用的,所以此命令很實用
bp [address] /t ethread 僅當當前執行緒為ethread時才中斷,用法跟/p引數類似
bu [address]or[symbol] 下乙個未解析的斷點(就是說這個斷點需要延遲解析)
這個也很常用,比如我們的驅動名為mydriver.sys,那麼在驅動載入之前下斷bu mydriver!driverentry,
然後載入這個驅動時就可以斷在驅動入口,並且這個是不需要除錯符號支援的
bl 列出所有斷點,l=list
bc[id] 清除斷點,c=clear,id是bl檢視時的斷點編號
bd[id] 禁用斷點,d=disable,id即斷點編號
be[id] 啟用斷點,e=enable,id為斷點編號
3.檢視和修改資料
除錯中不可避免的要檢視和修改資料
檢視記憶體:
db/dw/dd/dq [address] 位元組/字/雙字/四字方式檢視資料
da/du [address] ascii字串/unicode字串方式檢視指定位址
其它常用的如檢視結構
dt nt!_eprocess
dt nt!_eprocess 89330da0 (把0x89330da0作為物件指標)
修改記憶體:
eb/ew/ed/eq/ef/ep address [values]
位元組/字/雙字/四字/浮點數/指標/
ea/eu/eza/ezu address [values]
ascii字串/unicode字串/以null結尾的ascii字串/以null結尾的unicode字串
搜尋記憶體:
s -[b/w/d/q/a/u] range target
搜尋位元組/字/雙字/四字/ascii字串/unicode字串
4.暫存器
在用windbg除錯時可以alt+4直接調出暫存器視窗,然後拖放到合適的位置就可以。
要修改呢就直接雙擊相應的項就可以了。
把命令的方式也說一下,比較簡單:
r 顯示所有暫存器的值
r eax 顯示eax的值
r eax=1 修改eax的值為1
5.輔助命令
!process 顯示當前程序資訊
!process 0 0 顯示當前所有程序(會有殭屍程序)
!process 1f4 顯示pid為1f4的程序資訊,後面也可以跟eprocess的值
!thread 顯示當前執行緒資訊
!thread
!process 1f4 顯示tid為768的執行緒資訊,後面也可以跟ethread的值
棧相關:
k 顯示呼叫棧
kb 顯示ebp和前3個引數
kp 以函式呼叫形式顯示棧
以上就是常用的命令了~~~
Windbg常用命令
在windbg的命令列視窗輸入 則會輸出幫助選單,在這個menu中會顯示一些常用的命令 1 斷點指令 b c d e clear disable enable breakpoints bl list breakpoints bp set soft breakpoints ba break on ac...
windbg常用命令
1.檢視執行緒 ring3 顯示當前執行緒.顯示所有執行緒 顯示異常執行緒 2 選擇2號執行緒 1 kb 顯示1號執行緒棧資訊 2.斷點 bp addr module fun 支援位址和模組斷點 bp p proc 程序斷點 bp t thread 執行緒斷點 bu module fun 模組斷點 ...
windbg常用命令
2.斷點 斷點之於除錯當然是非常重要的 常用命令 bp address or symbol 在指定位址下斷 可以使用位址或符號,如 bp 80561259 windbg預設使用16進製制 bp mydriver getkernelpath bp mydriver getkernelpath 0x12...