约有 15 项符合查询结果, 以下是第 2 - 2项。
费时 < 1 秒。
WinDBG好像有这样一个bug:
找个IDT中的中断处理程序,在入口处下个断点,触发异常,WinDBG就断下来了,根据中断门的原理,这时只有CS,EIP,TF,IF,SS,ESP会发生变化,其它的寄存器应该不变。但WinDBG自做主张把FS寄存器改成了30h,看看除0异常:
nt!KiTrap00:
8053f19c 6a00 push 0
8053f19e 66c74424020000 mov word ptr [esp+2],0
8053f1a5 55 push ebp
8053f1a6 53 push ebx
8053f1a7 56 push esi
8053f1a8 57 push edi
8053f1a9 0fa0 push fs ...
Posted in Windows内核调试
by
井底之蛙
on 2008-12-08
noumex Specifies that the kernel debugger does not break for user-mode exceptions. By default, the kernel debugger breaks for particular user-mode exceptions, such as STATUS_BREAKPOINT and STATUS_SINGLE_STEP. The /debug=noumex parameter is effective only when there is no user-mode debugger attached to the process. ...
Posted in Windows内核调试
by
井底之蛙
on 2008-12-07
明白了,单步iret指令时,windbg会从栈中找出压入的eip,然后在eip指向的内存下int3断点!!
由于call 任务门 CPU是不压栈的,所以栈中数据为0,单步iret指令时,windbg从栈中找出压入的eip=0,写int3断点,所以就异常了(这时iret还没执行,所以任务也没切换)
Posted in Windows内核调试
by
井底之蛙
on 2008-12-07
忘说了,我是在VMware下调试的,
其实在第一种情况:只要一断到WinDBG,go……就把对应进程挂掉!
总感觉int xx里面不能随便下断,不然很容易要崩溃……
Posted in Windows内核调试
by
井底之蛙
on 2008-12-04
我想通过WinDBG在ring0下单步iret指令,来返回用户模式ring3,我这里有两种奇怪的情况:1. 找了个int 2A的,单步iret真的进入了ring0,但go之后就挂了,还有如果ring3下挂了调试器,情况就更怪了,不知道谁在int 2A之后加了个CC2.(自己构造)任务门返回的那个iret,单步iret,马上就异常了,好像任务都没切换,但是如果go,就没有任何问题搞了大半天越来越头晕,特来请教……
还有一问:
《在内核调试会话中设置用户态断点》
内核调试器不能捕获用户态中的异常,那它怎么能去调试用户态中的程序呢??
Posted in Windows内核调试
by
井底之蛙
on 2008-12-04