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