关于Windows消息钩子的理解与测试项目
2018-02-11 16:47
537 查看
前奏
近来一直在自学Windows Hook相关的知识,已经尝试多种注入方式。尤其对消息钩子方式很感兴趣,因为看到Spy++能够截获系统中绝大多数应用的消息流,就很想知道它的工作原理,打算制作属于自己的Spy++。消息钩子简介
消息钩子简言之就是Windows处理消息的一个平台,用户可以在此平台获取或过滤所需应用的消息(例如某鼠标位置,键盘击下等),这些被监控的消息都会在目标窗口处理函数之前被截获。系统在拿到消息后会问你:这是不是你想要的消息?如果是,则恭喜你,你可以在回调函数里做相应操作了。消息钩子函数背景
消息钩子主要由三部分组成:钩子安装函数钩子回调函数
钩子卸载函数
钩子安装函数原型
参数2-HOOKPROC lpfn:此参数是钩子回调函数的地址,对应上述不同种类的钩子类型,其钩子回调函数原型基本是一致的。请见下(需要注意的是,wParam和lParam针对不同类型的钩子,传递参数所代表意义不同,因种类繁多,请各位查阅MSDN):
请见上钩子卸载函数
键盘消息钩子及CBT钩子程序代码
首先我们要明确下,钩子从安装到回显的流程编写Dll,在Dll中实现我们所需要的钩子回调函数及安装函数。Dll中除了要编写与钩子相关的处理函数,也要编写与显示程序通信的模块,以便验证钩子消息的正确性。
Dll需要导出钩子启动函数与卸载函数。
回显程序处理已安装钩子发送的信息。
至此,框架已经明了,我们分步拆解完成这个小项目。(整体代码请见附件,VS2013编译)结构体及枚举的定义
安装消息钩子后
由于钩子种类繁多,我暂时没有全部实现,有兴趣的各位可以在我的基础上试试其他的,代码写的不好,让各位见笑了,如有错误,也恳请各位指正。
相关文章推荐
- 关于OC中消息转发机制的理解以及在项目中的实际应用
- 关于HOOK,如何通过钩子截获指定窗口的所有消息 SetWindowsHookEx demo
- 关于OC中消息转发机制的理解以及在项目中的实际应用
- Delphi中的消息钩子函数和Windows子类处理 入门篇
- .Net程序员关于微信公众平台测试账户配置 项目总结
- 关于测试人员何时介入项目小组
- windows全局消息钩子的一个BUG
- 关于$emit和$broadcast的理解与测试
- 使用windows钩子捕获进程的启动和关闭消息
- 又一篇关于windows消息队列比较好的文章
- Windows的消息使用理解
- 关于项目自动化测试架构的改良计划 - 去除动作指令
- MFC---理解Windows消息循环机制
- (转载)关于WM_NCHITTEST消息 命中测试
- VB无所不能之三:VB截获Windows消息的钩子
- 收集关于Windows消息的代码目录
- 理解Windows消息循环机制
- Dll注入:Windows消息钩子注入
- 【收集】关于windows消息队列和窗体机制的文章[不断完善中]
- 我的mqtt协议和emqttd开源项目个人理解(3) - 客户端publish消息QoS==0的源码分析