程序员尤其 Windows 程序员会经常说“下个钩子”,小编还是一名学生的时候,对说出这个短语的人真是崇拜至极。
这么多年过去了,小编还会不经意间蹦出这几个字,即使已经了解这是一名程序员的基本功,说起来依然觉得有范儿。钩子来源于英文词hook。在Windows系统中一切皆消息,按键盘上的键,也是一个消息。Hook 的意思是钩住,也就是在消息过去之前,先把消息钩住,不让其传递,使用户可以优先处理。执行这种操作的函数也称为钩子函数。简单地讲,就是“要想从这过,留下买路财”。
要去公共厕所,必须先经过公厕门口老爷爷的收费允许,老爷爷就是在下“钩子”,这个钩子函数的功能是付款。回到工作过程中,程序员在讨论时也常说“可以先钩住再处理”,即执行某操作之前,优先处理一下,再决定后面的执行走向。
有一些技术是利用钩子的,比如一些程序经常会校验自身签名,不允许他人改动程序安装包,这时如果钩住校验的函数,假装处理为校验通过(其实没有通过,因为钩子能优先处理并返回,所以执行不到原始的代码了),这种情况下就欺骗了原始程序,从而达到目的。
以上就是钩子的思想和原理,希望以后在和程序员交流的过程中,听到这个词时,读者也能够自信地对程序员点点头。