-
-
[求助]在18章的补丁技术中,硬件断点的疑问
-
2010-4-12 15:33 3807
-
,看到18.2.3节中,利用调试寄存器机制中,
499页书上代码是这样的(以下代码是照这打的,也许打错了,不过关键不在代码)
我的疑问,为什么要三次中断才行,
我单步跟了一个,前两次中断好像都是在系统的领空
而第三次才是程序领空。非要三次才正确。
实在是不大明白,为什么要这样??为什么在第一次中断的时候不直接让
Regs.Dr0=BREAK_POINT1;
这试了不行。这是什么原因咧???
忘前辈们解惑,万分感激!
499页书上代码是这样的(以下代码是照这打的,也许打错了,不过关键不在代码)
... if(dwSSCnt==1) { //第一次中断 GetThreadContext(pi.hThread,&Regs); Regs.Dr0=Regs.Eax; Regs.Dr7=0x101; SetThreadContext(pi.hThread,&Regs); } else if(dwSSCnt==2) {//第二次中断 GetThreadContext(pi.hThread,&Regs); Regs.Dr0=BREAK_POINT1; Regs.Dr7=0x101; SetThreadContext(pi.hThread,&Regs); } else if(dwSSCnt==3) {//第三次中断 ..... } ...
我的疑问,为什么要三次中断才行,
我单步跟了一个,前两次中断好像都是在系统的领空
而第三次才是程序领空。非要三次才正确。
实在是不大明白,为什么要这样??为什么在第一次中断的时候不直接让
Regs.Dr0=BREAK_POINT1;
这试了不行。这是什么原因咧???
忘前辈们解惑,万分感激!
阿里云助力开发者!开发者可享99元/年,续费同价!企业可享99元/199元双重权益
赞赏
他的文章
看原图