这个我理解,INT3中断函数我其本看明白了。函数里对发起中断的源进行了判断,发现对标志寄器的第17位(从0开始)好多处的检查。 不过还有一个地方不解,就是看到Kei386EoiHelper函数时,其有下面一个片断。 .text:00443FC9 cmp word ptr [esp-60h+arg_64], 80h .text:00443FD0 ja short loc_443FD8
.text:00443FD8 loc_443FD8: ; CODE XREF: _KiServiceExit+E7j .text:00443FD8 ; _KiServiceExit2+B9j ... .text:00443FD8 cmp word ptr [esp-60h+arg_5C+2], 0 .text:00443FDE jz short loc_443FD2 .text:00443FE0 cmp word ptr [esp-60h+arg_5C], 0 .text:00443FE5 jnz short loc_443FD2 .text:00443FE7 shr [esp-60h+arg_5C], 10h .text:00443FEB mov word ptr [esp-60h+arg_5C+2], 0F8h .text:00443FF2 lss sp, [esp-60h+arg_5C] ; mem低字->reg,mem高字->ss .text:00443FF7 assume ss:FLAT .text:00443FF7 movzx esp, sp .text:00443FFA iret word ptr [esp-60h+arg_64]这个地址是进入中断时第一个局部变量,int3开始的时候直接PUSH 0,之后没有变过。不明白这段在中断是处理什么情况的。
|