ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VEH(向量化异常处理)

2021-10-30 20:31:57  阅读:414  来源: 互联网

标签:函数 CALLOUT 链表 参数 ENTRY 量化 异常 VEH


VEH

1. VEH链表结构

typedef struct _VECTXCPT_CALLOUT_ENTRY {
    LIST_ENTRY Links;
    PVECTORED_EXCEPTION_HANDLER VectoredHandler;
} VECTXCPT_CALLOUT_ENTRY, *PVECTXCPT_CALLOUT_ENTRY;

VEH链表是一个双向循环链表

2. RtlCallVectoredExceptionHandler函数分析

KiDispatchException流程图中分析了KiDispathcException函数处理异常并重新返回零环的过程, KiDispathcException首先调用RtlDispatchException, 在RtlDispatchException中首先调用RtlCallVectoredExceptionHandler来遍历VEH来处理异常.
在这里插入图片描述

首先遍历VEH链表, 依次执行VEH, 如果异常被成功处理就返回, 否则就一直遍历, 如果VEH无法处理异常, 那就交给SEH处理.

3. RtlAddVectoredExceptionHandler函数分析

在这里插入图片描述

RtlAddVectoredExceptionHandler有两个参数:

  • 第一个参数(FirstHandler)决定新节点插入的位置
    • 如果第一个参数为0(False), 尾插
    • 如果第一个参数为1(True), 头插
  • 第二个参数(VectoredHandler)是VEH的处理函数

如果插入成功, 该函数将插入成功的VEH节点指针返回.

4. RtlRemoveVectoredExceptionHandler函数分析

在这里插入图片描述

RtlRemoveVectoredExceptionHandler函数有一个参数, 该参数是一个VECTXCPT_CALLOUT_ENTRY结构体指针, 该函数首先遍历VEH, 找到要被删除的那个, 将其从链表中摘除, 然后释放VEH结构体的内存.

如果找到并成功删除了返回1, 如果没有找到则返回0.

5. VEH HOOK

后面补上

标签:函数,CALLOUT,链表,参数,ENTRY,量化,异常,VEH
来源: https://blog.csdn.net/OxCCCCC/article/details/120052337

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有