欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

打造史上最完整APIHOOK完整开发库

打造史上最完整APIHOOK完整开发库

最近看见不少关于APIHook的帖子,但是大部分都只做了一个简单的描述,即使有些提供了例子的帖子,也多多少少有些执行上问题。
 
因此,本人根据以前写的半成品,并参照《Windows核心技术开发》的22章节,对原有代码进行重新设计,在进行详细的测试之后,基本的框架已经可以出炉了。
 
首先,介绍一下APIHook。进行API挂接时,所需的基本函数有【LoadLibraryA,LoadLibraryW,LoadLibraryExA,LoadLibraryExW,GetProcAddress】。
这5个API是不可缺少的,其余的API挂接都可以算作扩展,因此构架上将其分成两个以上的模块是最合适,也是最容易扩展的。
 
基于上述考虑,我们将实现部分分成APIHook.DLL和UserAPIHook.DLL两个部分。当然用户扩展模块还可以按照类别分成User1,User2,...UserN等多个模块,这样的话,可以在增加新的API挂接时,可以不用修改原有的DLL。
 
好了我们首先来介绍一下APIHook.DLL的构架。
其中包含接口和实现两个部分。
1)接口
对于这次实现的DLL,只要当前EXE的进程加载该DLL,DLL的初始化处理中,会自动扫描进程中所有的DLL模块,并且将上述5个基本函数挂接上。
原理也很简单,就是将所有的DLL的输入节都进行修改。
基于这一点,如果只是在本进程内使用的话,也不需要什么接口。因此,此处实现的接口是用来挂接其他进程的,技术上将DLL注入其他进程有很多方法,这里只实现两种,HOOK和CreateRemoteThread。
 
1.1)HOOK
使用系统的SetWindowsHookEx方法来实现,接口上提供以下接口:

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功