Win10 X64 HOOK KiUserExceptionDispatcher

本文介绍了如何在Windows 10 x64系统中使用HOOK技术修改KiUserExceptionDispatcher,实现自定义异常处理,并通过MinHook库实现在程序运行时捕获和处理异常。内容包括hook函数的编写、异常记录的处理以及VEH异常处理机制的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Win10 X64 HOOK KiUserExceptionDispatcher

HOOK.ASM

extrn NewKiUserExceptionDispatcher : proc 
extrn OrgKiUserExceptionDispatcher : proc  
extrn OldKiUserExceptionDispatcher : proc 
.data
.code


;hook 
public MyKiUserExceptionDispatcher

MyKiUserExceptionDispatcher PROC  
    mov   rcx, rsp 
    add  rcx,4F0h
    mov   rdx,rsp  
    call  NewKiUserExceptionDispatcher ;先经过我们自己的异常处理

    ;mov rax,[OldKiUserExceptionDispatcher]  ;这样跳转回去会异常 原因未知
    ;jmp rax 

    ;
    mov   rax, [OrgKiUserExceptionDispatcher] ;直接用原函数+偏移 跳到RtlDispatchException 这样可以
    mov   rax,[rax]
    add   rax ,1ch
    jmp   rax; RtlDispatchException
    ret
MyKiUserExceptionDispatcher ENDP

END

HOOKFUC.H

#pragma once
#include <windows.h>

typedef VOID(WINAPI* PtrKiUserExceptionDispatcher)();
namespace HookEmu {
   
	//extern "C" C形式导出
	extern "C" PtrKiUserExceptionDispatcher OrgKiUserExceptionDispatcher;
	extern "C" PtrKiUserExceptionDispatcher OldKiUserExceptionDispatcher;
	extern HMODULE hNtDll ;
	
}
 

namespace HookFunction {
   
	 extern VOID HookKi();

}

namespace KiuserExc
{
   
	extern "C" void MyKiUserExceptionDispatcher();//汇编导出
	extern "C" void   NewKiUserExceptionDispatcher(PEXCEPTION_RECORD ExceptionRecord, PCONTEXT  Context);
}
namespace VEH_Tess
{
   
	extern LONG __stdcall VEHandler(
		EXCEPTION_POINTERS* ExceptionInfo
	);
	extern void InitVeh();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值