Interrupt 3

无论何时触发了一个软件中断异常, 异常地址以及EIP寄存器的值都会同时指向产生异常的下一句指令. 但断点异常是其中的一个特例.

EXCEPTION_BREAKPOINT(0x80000003)异常触发时, Windows会认定这是由单字节的"CC"操作码(也即Int 3指令)造成的. Windows递减异常地址以指向所认定的"CC"操作码, 随后传递该异常给异常处理句柄. 但是EIP寄存器的值并不会发生变化.

因此, 如果使用了 CD 03(这是 Int 03 的机器码表示),那么当异常处理句柄接受控制时, 异常地址是指向 03 的位置.


评论