Skip to content

ResetMineMind/tinyKernelHook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinyKernelHook

​ 项目介绍:https://bbs.kanxue.com/thread-286868.htm

1. 基本原理

​ 借用windows使用的int 2e异常劫持控制流。

2. 用法

​ Hook的目的是劫持控制流,引导其执行预定义的操作,因此需要使用者自定义Hook函数。

image-20250516113323347

image-20250516112150234

​ 上图中使用HOOKENTRY宏,注册自定义的Hook函数;注意,不需要在Hook函数中再次调用被Hook的函数,因为在Hook函数执行完毕后,会自动恢复原函数的执行流。

image-20250516112516224

hook.c文件,用于存储用户自定的Hook函数,其参数是全体通用寄存器组成的栈帧。

image-20250516112919924

​ 最后,使用InstallHook,指定函数所在模块、函数地址、自定义Hook的wrapper函数地址,就可以将控制流转移到自定义Hook函数,建议使用KeGenericCallDpc在多核间同步Hook。

3. 总结

​ Hook注册流程如下:

  1. 用户定义INT64 __stdcall (*)(PREGContext pushedAqs)类型的Hook函数。
  2. 使用HOOKENTRY宏,在hooks.asm中进行记录。
  3. 使用InstallHook函数,在trapHook.c文件KeGenericCallDpc回调例程InitAndInstallHook,正式注册Hook。

About

一个仅使用2字节修改实现内核任意函数hook的方法。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors