什么是钩子

什么是钩子

钩子源于hook,即在消息过去之前先把消息钩住,不让消息执行,自己先优先处理。

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

钩子列表

一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。

hook的应用

有一些技术时利用hook的,比如一些程序经常会校验自身签名,不允许你改动程序安装包,这个时候如果Hook住校验的函数,假装处理为校验通过(其实根本没通过,因为你能优先处理并返回,所以执行不到原始的代码了),这种情况下酒欺骗了原始程序,从而达到目的。

程序挂载全局钩子从而被360拦截的例子(其实360也有钩子,不然怎么知道别人要挂载钩子呢?即360可以拦截“挂载钩子”的消息。这个弹窗就是在360的钩子函数中创建的)


相关翻译

DDL: 动态链接库

Hook Chain : 钩子链表

hook procedures : 钩子子程(即得到消息后进行处理的程序段)


上一篇
区块链与比特币 区块链与比特币
区块链与比特币区块链视频来源:区块链技术核心概念与原理讲解 前世 Hashcash,使用了POW(工作量证明) 时间戳方法(保证数字文件的安全协议) B-money(强调点对点交易和不可更改记录) 加密现金 比特币:一个点对点(去中心化)的
2021-05-10
下一篇
原码,反码,补码的用途 原码,反码,补码的用途
问题: 为什么计算机里要存在补码,只有反码不可以吗?我们想求 2 - 1,但我们不想在计算机内部用减法去完成这件事 所以,我们可以曲线救国,利用高位溢出,使用2 + 127-128去完成 什么叫高位溢出呢? 1111 1111 + 0
目录