- 注册时间
- 2021-4-16
- 最后登录
- 2023-8-11
- 在线时间
- 3 小时
编程入门
- 龙马币
- 36
|
Win10 X64 HOOK KiUserExceptionDispatcher
MAIN.CPP
- #include <iostream>
- #include "hookFun.h"
- #include "MinHook.h"
-
- void func(int cc) {
- __debugbreak();
- printf("func ok\n");
- }
- int main()
- {
- VEH_Tess::InitVeh();
- HookFunction::HookKi();
- while(1){
- func(11);
- getchar();
- }
- printf("********************\n");
- getchar();
-
- }
-
复制代码
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
复制代码
回复帖子查看所有代码:
|
|