程序员尤其Windows程序员会经常说「下个钩子」,当年果果还是一名学生的时候,word天呐,对说了这个词语的人真是崇拜至极,心里默念着牛逼。
这么多年过去了,有的时候嘴里也会不经意间叨逼叨的蹦出这个词,现在都懂这是一名程序员应该懂的基本功,但说起来依然有范儿,希望你也学会说,至少能够理解。
其实钩子来源于英文词Hook,在windows系统中,一切皆消息,比如按了一下键盘,也是一个消息,Hook的意思是勾住,也就是在消息过去之前,可以先把消息勾住,不让其传递,你可以优先处理,也即这项技术就是提供了一个入口,能够针对不同的消息或者API在执行前,先执行你的操作,你的操作也称为「钩子函数」。
理解起来,就是“要想从这过,留下买路财”,一个公共厕所门口做了一个老爷爷,无论你要拉屎撒尿,必须先经过老爷爷收费允许才能入厕,老爷爷就是给你下了一个钩子,这个钩子函数功能叫做付款。
所以,有的时候程序员在讨论的时候,也经常会说,可以先hook住,在处理,也即在执行某某操作之前,优先处理一下,再决定后面的执行走向。
有一些技术是利用Hook的,比如一些程序经常会校验自身签名,不允许你改动程序安装包,这个时候如果Hook住校验的函数,你假装处理为校验通过(其实根本就没有通过,因为你能优先处理并返回,所以执行不到原始的代码了),这种情况下就欺骗了原始程序,从而达到你的目的。
好啦,这就是Hook的思想和原理,希望以后在和猿交流的过程中,听到这个词的时候,你能够自信的对程序员点点头,祝装逼成功哦~
阅读到这句话的时候,你其实本应该看到「赞赏」的界面,但是对不起,我把你的阅读顺序Hook住了,不得不执行我的钩子函数之后再赞赏,我的钩子函数的内容是这样的:
void main()
{
我最近认识一名腾讯的产品经理,叫刘大强,打心眼里觉得这个哥们太牛了,你们知道他做了一件什么事情吗?
先看图,再告诉你做了什么事情~
这都是他亲手为她老婆做的早餐,我只贴了4天的图,而且是用产品和运营的方法做的早餐,而且一做就是100天,100天,100天~
他运营了一个公众号经常原创一些关于美食,咖啡,早餐,厨房,攻略,旅游札记方面的东西,如果你也是有品味的同学,有兴趣可以长按二维码收听哦!在文末「阅读原文」中,附上他那篇10w+的文章《一位鹅厂产品经理给老婆做的早餐》的链接。
}
Hook函数结束。
联系客服