- 注册时间
 - 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
 
 
  复制代码 
 
 
回复帖子查看所有代码: 
 |   
 
 
 
 |