hook编程指的是什么-创新互联

这篇文章主要介绍hook编程指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

兴山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

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

以上是“hook编程指的是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


文章题目:hook编程指的是什么-创新互联
标题来源:http://hbruida.cn/article/cchsgi.html