Interrupt 3¶
無論何時觸發了一個軟件中斷異常, 異常地址以及EIP寄存器的值都會同時指向產生異常的下一句指令. 但斷點異常是其中的一個特例.
當EXCEPTION_BREAKPOINT(0x80000003)
異常觸發時, Windows會認定這是由單字節的"CC
"操作碼(也即Int 3
指令)造成的. Windows遞減異常地址以指向所認定的"CC
"操作碼, 隨後傳遞該異常給異常處理句柄. 但是EIP寄存器的值並不會發生變化.
因此, 如果使用了 CD 03
(這是 Int 03
的機器碼錶示),那麼當異常處理句柄接受控制時, 異常地址是指向 03
的位置.