首页
社区
课程
招聘
[原创]VEH、SEH、UEF的作用范围
发表于: 2013-11-5 11:09 11410

[原创]VEH、SEH、UEF的作用范围

2013-11-5 11:09
11410
VEH - 向量化异常处理(Vectored Exception Handler)。
SEH - 结构化异常处理。
UEF - 未处理异常过滤。

VEH使用到的函数有:
AddVectoredExceptionHandler、AddVectoredContinueHandler、RemoveVectoredExceptionHandler、RemoveVectoredContinueHandler

SEH,要么自己构建SEH堆栈,要么使用__try...__except。

UEF使用的函数:SetUnhandledExceptionFilter,UEF的作用就是__try...__finally中的__finally,注意这里的用词,UEF并不是__finally

作用范围:
VEH - 作用于整个进程。
SEH - 作用于线程,具体作用于构建SEH的那个函数。
UEF - 作用于整个进程。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢楼主分享。
2013-11-5 11:40
0
雪    币: 253
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错哦。。画几个图,在调试下,就可以拿精华了O(∩_∩)O~
2013-11-5 12:49
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
4
UEF  的作用域也是整个进程。只是基于SEH机制实现的
2013-11-5 13:03
0
雪    币: 69
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
UEF是所有线程都可能用到的,并不是专门作用于线程的
2013-11-5 13:13
0
雪    币: 496
活跃值: (291)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
6
UEF使用的函数:SetUnhandledExceptionFilter,UEF的作用就是__try...__finally中的__finally。

UEF - 作用于线程,具体作用于使用UEF的那个函数。


不要误导大众……
__finally 属于SEH中的“结束处理”

SetUnhandledExceptionFilter的范围是整个进程,不过其本质也是基于SEH,每一个线程的最顶级SEH处理函数。
2013-11-5 13:17
0
雪    币: 74
活跃值: (748)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark  感谢分享
2013-11-5 14:17
0
雪    币: 144
活跃值: (224)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
我的用词有问题。
2013-11-5 15:16
0
雪    币: 144
活跃值: (224)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
你的评论说UEF作用于进程,主线程中设置UEF,但是其他线程发生异常的时候,这个设置的异常处理函数并没有起作用,所以我认为UEF是作用于线程的,难道这中间还有什么隐情吗?
2013-11-5 15:17
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
10
如果其他线程中设置了try,自己把异常处理了就不会走到UEF。

UEF是未处理异常过滤器。设置后,只要有线程抛出了异常,并且没有被VEH,SEH(自身注册的try)处理,才会被UEF处理。

三个之间的处理顺序为: VEH --> SEH -->UEF。

楼主可以参考:http://bbs.pediy.com/showthread.php?t=173853
2013-11-5 16:15
0
雪    币: 144
活跃值: (224)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
我的测试代码写错了,所以得出了错误的结论,帖子中已经做了更改。
2013-11-5 16:42
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
__finally 是不管有没有处理异常,这个宏下面的都是要被执行的吧.
2013-11-5 22:06
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
路过来留个mark
2013-11-5 23:58
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
SEH没有处理还会再次查询一遍VEH,不过这里的是通过AddVectoredContinueHandler来设置的

VEH --> SEH --> VCH --> UEF
2013-11-8 02:20
0
游客
登录 | 注册 方可回帖
返回
//