能力值:
(RANK:410 )
|
-
-
2 楼
在论坛上搜索“SEH IN ASM”
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
终于明白什么叫展开操作了!这个RtlUnwind(展开操作函数)所作的工作就是:第一步是以EXCEPTION_UNWINDING标志调用从fs:[0]开始到当前回调函数为止的所有回调函数,第二步是将fs:[0]重新设置一下,指向注册当前回调函数使用的EXCEPTION_REGISTRATION结构.读了N遍教程后终于看懂了,嗨~笨!之前P555(罗云彬WIN32汇编语言设计)的那段--如果程序在SEH链上挂了多个回调函数,并且每个回调函数都不处理异常的话,在系统默认的显示错误的对话框出现以后,每个回调函数都会被再调用一遍,这时参数中指定的异常代码是EXCEPTION_UNWIND,异常标志的取值是2,也就是EXCEPTION_UNWINDING标志。这种调用并不是要求回调函数去处理什么异常,而是告知回调函数:“你将要被卸掉了,自己处理一些后事吧”,在这时回调函数应该进行一些卸载前的扫尾工作并且返回ExceptionContinueSearch。也说明了SEH链上每个回调函数都不处理异常的话,操作系统会对所有的回调函数进行展开操作!
|
|
|