我从互联网上获取了一些代码,这些代码应该用 SEH 处理异常,
ASSUME FS:NOTHING
PUSH OFFSET Handler
PUSH FS:[0]
MOV FS:[0], ESP
...
但是FS:[0]
应该持有处理程序的地址,对吗?
所以mov fs:[0], esp
是错误的,因为esp
当前指向原始fs:[0]
:
堆栈是这样的:
-----------
| fs:[0] | <-- ESP
-----------
| handler |
-----------
那么,不应该是esp + 4
这样的东西吗?我显然错了,但我不明白为什么。