系统吧 专业的电脑操作系统,支持重装各种原版系统xp/win7/win8/win10 这个系统怎么样?试试系统吧系统,体验办公系统畅快愉悦感。 各种电脑系统安装过程一样,神一般的畅快!
-->
当前位置:主页 > win7 >

Win7系统中使用WinDbg与虚拟机调试驱动程序的操作方法和要点(4)

作者:宋惜瑶 分类:win7 发布时间:2017-10-12 21:37:56

断点指令:BP,BM,BA,BL,BC,BD,BE BP 在指定的地址设置断点 bp notepad!WinMain,在Notepad的WinMain函数处下断点。 断点的位置可以用符号表示,也以直接使用...

断点指令:BP,BM,BA,BL,BC,BD,BE

BP 在指定的地址设置断点

bp notepad!WinMain,在Notepad的WinMain函数处下断点。

断点的位置可以用符号表示,也以直接使用地址及Windbg的Pseudo-Register(虚拟寄存器),如$exentry表示进程的入口点,可以使用bp @$exentry在进程的入口点设置断点,对于Notepad当前入口点为01006420,也可以直接 bp 01006420,等效于bp notepad!WinMainCRTStartup.

BM 使用模式匹配设置断点,需要符号表支持

bm 值一提,在符号表合法的情况下(符号表中包含私有符号的时候),bm可能通过模式一次下多个断点,bm mydriver!FastIo*指定可以将所有与FastIo*模式相匹配的函数下断点,如FastIoRead,FastIoWrite等。但是bm 需要full or export symbols支持,Microsoft的提供的符号表不是都支持的,通常我们自己编译的程序的符号表(Windbg显示为private pdb symbols)默认是支持的。

BA (Break on Access)

顾名思义,对内存访问下断点。对于在多核或多处理器调试的时候很有用,对于调试多线程也很有用,应该说用处很多,比如对一个全局变量设置断点,ba mydriver!gMonitoredDevices,如果如果你认为这个变量的值被莫名的修改了,相信通过BA设置的断点,你很快就能找到是谁修改的。

BL(List),BC(Clear),BE(Enable),BD(Disable)

这四个指令是分别用于列表,清除,开启和禁用断点,也是使用非常频繁的指令。

条件断点

以上所提到的断点指令通过与J指令很容易形成条件断点。比如:

bp USER32!GetMessageW “r $t1=poi(esp+4);r $t2=poi(@$t1+4); j(@$t2 = 0x102 ) ‘du @$t1+8 L2;gc’;‘gc’”

这个条件断点,截取WM_CHAR消息,并将字符(包括中文)显示出来。

条件断点的最简形式:bp Address “j (Condition) ‘OptionalCommands’; ‘gc’ ”

Address是指令的地址,Condition是一个条件表达式,如果@eax=1,‘OptionalCommands’是在断点被击中并且表达式成立时要执行的指令;gc指定是从一个条件断点返回,是不可少的一部分。

数据查看指令 d{a|b|c|d|D|f|p|q|u|w|W}

d{b|c|d|D|f|p|q}分别是显示:

byte&ASCII, double-word&ASCII,double-word,double-precision,float,pointer-sized,quad-word数据;

DA用于显示ASCII,DU用于显示UNICODE;

BYB,BYD,显示binary和Byte及binary和DWORD

补充一个DV,用于查看本地变量用的

这些指令区分大小。

栈指令k[b|p|P|v]

这四条指令显示的内容类似,但是每个指令都有特色,KB显示三个参数,Kp显示所有的参数,但需要Full Symbols或Private PDBSymbols支持。KP与Kp相似,只是KP将参数换行显示了。Kv用于显示FPO和调用约定,KD,用于显示Stack的Dump,在跟踪栈时比较有用。

这些指令区分大小。

KD显示的内容:

0012fbd0 0012fbf0

0012fbd4 77e2158f USER32!UserCallWinProc+0x18

0012fbd8 0016011e

0012fbdc 00000030

0012fbe0 750a0c3f

0012fbe4 00000000

0012fbe8 00000000

0012fbec dcbaabcd

0012fbf0 0012fc2c

0012fbf4 77e1279c USER32!DefDlgProcWorker+0xbf

0012fbf8 004018e0 DGGuarder!MainDLGproc [j:/mydriver/dgguarder2/dgguarder.c @ 350]

0012fbfc 0016011e

0012fc00 00000030

0012fc04 750a0c3f

0012fc08 00000000

0012fc0c 00629d08

0012fc10 00000030

0012fc14 00619828

0012fc18 77e0f626 USER32!__ClientLoadMenu+0x38

0012fc1c 77e0f635 USER32!__ClientLoadMenu+0x47

KP显示的内容:

ChildEBP RetAddr

0012fbd0 77e2158f DGGuarder!MainDLGproc(

struct HWND__ * hwnd = 0x0016011e,

unsigned int message = 0x30,

unsigned int wParam = 0x750a0c3f,

long lParam = 0)+0x227 [j:/mydriver/dgguarder2/dgguarder.c @ 415]

xp 更多>>
win7 更多>>
win8 更多>>
win10 更多>>
U盘 更多>>
电脑技术 更多>>
网站地图 | 豫ICP备2021035069号-4 | 友情链接qq:191064436
系统吧

版权所有 © 2012-2023 系统吧 免责声明:本站资源均收集于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时删除相应资源。