VEH→SEH→UEH以及VCH
VEH向量化异常处理器、SEH结构化异常处理器,UEH(UEF)顶层异常处理器。
VEH:保存在全局的一个链表中,所有的线程共享一个VEH链表,VEH活动于用户层。
SEH:保存在栈空间上是一个局部的链表,每个线程都有自己的SEH,线程之间的SEH互相不影响(既活动于内核层又活动于用户层)。
UEH:保存在一个全局变量上,由于全局变量是所有线程能够共享的,所以所有的线程共享一个UEH,它是属于处理异常的最后一道关卡,如果没记错的话,它存在于两个地方,程序的开始位置和最后各存在一个,但是一般不做异常处理(也可以做异常处理),更多的被用于内存转储并上传服务器。最重要的是当程序处于被调试状态时,不会调用UEH。所以可以用于反调试。
VCH:位置是跟随SEH的,就存储在SEH的旁边的一个链表中,可以设置多个,线程共享。可以看成是SEH的一部分,因为存在于SEH后面。也不会做异常处理,前面异常处理成功了,才会调用此VCH。