hook编程指的是什么
创始人
2024-12-15 20:40:47
0次

  Hook是Windows下的一个机制,Hook的中文意思是钩子的意思,顾名思义,钩子就是用来钩东西的,就好像钓鱼一样,你把鱼钩放入鱼塘里,钓到了某条鱼,即便我们不把鱼钓上来,我们可以通过鱼钩知道鱼在做什么,比如鱼飞速游动,鱼钩上的鱼线会做出反应,或者鱼原地不动,我们都可以通过鱼钩知道鱼在做什么!

  hook编程是什么

  Windows就像一个鱼塘,而程序,就是鱼塘里的鱼,而用来监视这些鱼的鱼钩就是Hook!

  众所周知,Windows平台上的程序是以事件驱动和消息为基础工作的,事件与消息是关联的,消息的触发来响应事件,比如我单击了一个应用程序上的按钮,那么此时这个应用程序会触发一个消息即为MK_LBUTTON消息被发送到系统的消息队列里(触发过程是由操作系统根据鼠标点击某个窗口上某个控件来触发的,原理上是由操作系统触发的消息),这些消息都是以数据结构形式存储的,每个队列里不仅存储消息还有触发的窗口句柄等参数信息,Windows会把这些消息在转发给指定窗口进程下的消息队列,然后由消息队列来处理或者由操作系统来默认处理,学过Win32编程和MFC编程的应该比较熟悉,这里的消息流程只是仅限于Windows提供的WindowsSDK库下的API接口开发的程序!

  就好像控件一样,控件其实就相当于一个窗口,只是一个需要容器的窗口,也有自己的消息循环,学过COM组件开发的都知道基于COM组件开发ActiveX控件里也有一套消息循环机制和对应的响应事件,比如按钮的获取焦点对应的绘图函数!

  其它框架不一定使用此方法,比如QT的信号和槽,但QT内部封装了Windows消息和事件驱动模型,原理上来说,你单击QT上的一个按钮还是会产生MK_LBUTTON消息并返回给对应的QT程序,还是会返回到程序的消息循环队列里去,只是QT用了信号和槽的方式来代替消息与事件,比如你用第三方软件给QT程序上的某个按钮发送MK_LBUTTON消息还是会响应对应的事件,因为QT上的控件都是基于Windows下的SDK接口来实现完成的,QT的核心还是:触发消息>系统消息>应用消息,和Windows一样,只是内部封装起来了!

  hook编程运行机制

  钩子是Windows平台下的一个用于截获消息的程序段,Windows内部也在用它,当我们使用特定函数来安装一个钩子时,操作系统会给这个钩子分配一个钩子链表,并且这个钩子就相当于一小段程序,称为钩子子程序,这段程序会根据钩子类型的不同,来实现不同程度的消息截获,并且这个钩子链表里包含了这个钩子程序的地址,类型,回调函数的地址!

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...