首页 > 生活 > > 正文
2024-01-22 22:48:13

消息钩子注入可以访问其他进程内存方式吗(消息钩子)

导读 大家好,我是小夏,我来为大家解答以上问题。消息钩子注入可以访问其他进程内存方式吗,消息钩子很多人还不知道,现在让我们一起来看看吧!...

大家好,我是小夏,我来为大家解答以上问题。消息钩子注入可以访问其他进程内存方式吗,消息钩子很多人还不知道,现在让我们一起来看看吧!

1、钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。

2、当消息到达后,在目标窗口处理函数之前处理它。

3、钩子机制允许应用程序截获处理window消息或特定事件。

4、钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。

5、每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。

6、这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

7、Hook API是指Windows开放给程序员的编程接口,使得在用户级别下可以对操作系统进行控制,也就是一般的应用程序都需要调用API来完成某些功能,Hook API的意思就是在这些应用程序调用真正的系统API前可以先被截获,从而进行一些处理再调用真正的API来完成功能。

8、   HOOK分为三种:LOCAL HOOK 和 REMOTE HOOK,还有一种是SYSTEM-WIDE LOCAL HOOK。

9、LOCAL HOOK就是指程序HOOK的就是本程序中的线程。

10、REMOTE HOOK有两种形式:一种是对其他程序中某个特定的线程;一种是对整个系统。

11、SYSTEM–WIDE LOCAL HOOK 是一种比较特殊的。

12、它具有REMOTE HOOK的功能,又可以用LOCAL HOOK 的表现手法,实际上就是WH_JOURNALRECORD和WH_JOURNALPLAYBACK两种HOOK。

13、REMOTE HOOK 必须封装在DLL中。

14、这是因为REMOTE HOOK是针对整个系统或其他进程的线程,因此HOOK必须封装成DLL,才可以植入到其他进程进行监控。

15、而SYSTEM-WIDE LOCAL HOOK采用的是另外一种架构,系统中的线程请求或获得一个硬件消息的话,系统会调用那个安装有HOOK的线程,并执行它的FILTER FUNCTION.然后再返回给请求硬件消息的线程。

16、这种架构有一个缺点就是如果HOOK FILTER FUNCTION的处理中进入无限循环的话,那么整个系统将停留再循环中,无法切换到其他线程。

17、为了处理这个缺陷,WINDOW使用了一个办法来处理:就是CTRL ESC键,如果用户按下CTRL ESC键,则系统将会发送一个WM_CANCELJOUNAL消息到有挂上JOUNAL 系列HOOK的线程上面。

本文到此讲解完毕了,希望对大家有帮助。