约有 36 项符合查询结果, 以下是第 2 - 4项。
费时 < 1 秒。
呵呵,是啊,这玩意咋看,好像原理很容易懂,不过要深入实现又觉得奇怪了。
等张老师。。。。
Posted in Windows内核调试
by
一鱼之歌
on 2011-04-12
看来我脑子转不过来了。我的理解是硬件断点和调试器无关
这是CPU级实现的,而调试器只是在int的时候接收到消息并处理而已。
所以我就觉得当你在内核中mov修改drx的时候。当切换了线程后,为什么这个修改后的drx对后面的线程还有效呢?后面的线程不是已经使用它之前保存的drx覆盖了drx原来的值吗?
Posted in Windows内核调试
by
一鱼之歌
on 2011-04-11
就是楼上朋友的意思,我就是不明白这里。断点的时候CPU不是看寄存器吗?可是每切换一个线程都会重新加载寄存器(包括drx),难道在内核中就没了对应线程的概念?
Posted in Windows内核调试
by
一鱼之歌
on 2011-04-11
下硬件断点我们知道是对drx寄存器做修改。例如我要下一个执行断点,就简单来说就是把这个执行地址加载到drx寄存器中,并修改相关位。
但是细想实现,又别有一翻意思。。
我的问题:在调试r3程序中,想下一个这样的断点时,我的想法就是必须要对这个进程的所有线程修改寄存器,因为每个线程都有自己的一份寄存器。我这个想法对吗?一个佐证例子就是
修改相关寄存器时必须使用SetThreadContext函数,而这个函数是必须提供一个线程句柄的,说明是以线程为单位。
2。如果上述成立,那在内核中呢?我的一个同事,他在内核中下一个执行断点的时候,就只是简单的mov drx,xxxxx。并不牵扯到什么线程,这又是为何呢?
Posted in Windows内核调试
by
一鱼之歌
on 2011-04-10
如果能实时联系向他请教那最好不过了,
我也知道会麻烦到他,不过我可以总结好问题再问
Posted in Windows内核调试
by
一鱼之歌
on 2009-09-08
哇,好多东西学啊。。。谢谢王宇兄
果然还是windbg看舒服点。。
上次来这里逛是半年前,你技术又牛了很多了吧。
很希望能有你指点,,,这附近我没人问。
不知道你上这论坛时间多不,或者有其它更有的方式请教你不?
Posted in Windows内核调试
by
一鱼之歌
on 2009-09-08
谢谢王宇兄。
那个stacksize我数不对,我看书理解就是在设备栈中,它attach到第几层嘛,也就是它再住下几层就到最下层。可是我在这个栈中数得不对啊。
如这个图中
http://bbs.pediy.com/attachment.php?attachmentid=30878&stc=1&d=1252406410
partMgr的stacksize=4而DR1的stacksize=3,真晕,(可能是一对多搞乱了,不懂)
问题5。不知道你算答了我没有,因为我印象中设备栈,顾名思义那样就是所有设备连接起来,应该形如 ...
Posted in Windows内核调试
by
一鱼之歌
on 2009-09-08
问题:1我这个截图就是一个设备栈了吧?
2。cdfs和redbook是什么关系,
3。设备堆栈里面应该全部是attach的关系吧,对不?
4。它里面的stackszie我也不知道怎么数。。
5。为什么有\driver attach在\device上?
很想知道。。我把上面的所有设置的各个字段的值抄在纸上对应,可是还理解不了
Posted in Windows内核调试
by
一鱼之歌
on 2009-09-08