初识VEH链(用户异常派发的进一步探究)
Windows内核分析索引目录 :https://www.cnblogs.com/onetrainee/p/11675224.html 初识VEH链(用户异常派发的进一步探究) VEH链是进程处理异常的一个非常重要的机制。 前面我们分析到用户异常进入内核之后会再次返回到R3层调用KeExceptionDispatcher函数尝试处理。 该函数的主要目的就是搜索VEH找到异常的解决方案,如果未找到会再次向零环抛出异常。 一、通过C代码来实现VEH挂载 如下代码,VEH是一个进程全局异常处理链表。 VEH只能处理单个进程的,后面的SEH在内核中处理全局的。 1 // veh.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 2 // 3 4 #include " pch.h " 5 #include <iostream> 6 #include <Windows.h> 7 LONG NTAPI MyVeH( struct _EXCEPTION_POINTERS * ExceptionInfo) { 8 // 9 // 检测到 c0000094 错误并进行处理. 10 // 11 if (ExceptionInfo->ExceptionRecord->ExceptionCode = 0xc0000094 ) { 12 MessageBoxA