栈异常的处理
当在应用程序中访问一个数组时,如果index超过数组的大小,可能会引起栈异常,因为只有访问到位置超过应用程序数据段的范围时才会导致异常。栈异常会触发0x0c中断。
处理异常时,最好能够显示发生异常的指令地址。因为中断时,CPU自动PUSH应用程序的EIP,CS,ESP,SS等,可以从栈上获得EIP。
中断后又执行了
PUSH ES
PUSH DS
PUSHAD
所以栈上保存的数据是
esp[0]: EDI
esp[1]: ESI
esp[2]: EBP
esp[3]: ESP
esp[4]: EBX
esp[5]: EDX</