seh : seh处理程序地址部分填入的是一个指向pop pop ret 这样连续三条指令的一个地址,这样填充原因是,在异常出现时,先保存当前栈定,然后系统会在栈里面压入两个参数,所以两个pop是pop出来系统压的参数,然后ret到nseh的位置,接着开始执行指令,然后参考上面nseh的数据介绍就可以。
所以现在0x004043A4 这个位置下断点,然后shift+F9就到了这个位置:
从断点的位置开始,将会执行一个pop pop ret指令,显然,MessageBox函数需要4个参数,从断点开始只压入了3个,MessageBox函数执行完之后,默认恢复斩平衡就会弹出来4个值,所以相当于一个pop指令,接下来一个pop,一个ret就回到了nseh,如下