钩子(Hook)是Windows提供的一种消息处理机制平台,是指在程序正常运行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,(钩子)实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。注意:安装钩子函数将会影响系统的性能。监测“系统范围事件”的系统钩子特别明显。因为系统在处理所有的相关事件时都将调用您的钩子函数,这样您的系统将会明显的减慢。所以应谨慎使用,用完后立即卸载。还有,由于您可以预先截获其它进程的消息,所以一旦您的钩子函数出了问题的话必将影响其它的进程。

钩子的作用范围

一共有两种范围(类型)的钩子,局部的和远程的。局部钩子仅钩挂自己进程的事件。远程的钩子还可以将钩挂其它进程发生的事件。远程的钩子又有两种: 基于线程的钩子将捕获其它进程中某一特定线程的事件。简言之,就是可以用来观察其它进程中的某一特定线程将发生的事件。 系统范围的钩子将捕捉系统中所有进程将发生的事件消息。

Hook 类型

Windows共有14种Hooks,每一种类型的Hook可以使应用程序能够监视不同类型的系统消息处理机制。下面描述所有可以利用的Hook类型的发生时机。详细内容可以查阅MSDN,这里只介绍我们将要用到的两种类型的钩子。
    (1)WH_KEYBOARD_LL Hook
        WH_KEYBOARD_LL Hook监视输入到线程消息队列中的键盘消息。
    (2)WH_MOUSE_LL Hook
        WH_MOUSE_LL Hook监视输入到线程消息队列中的鼠标消息。

使用完钩子后,要进行卸载,这个可以写在析构函数中。

什么是钩子(Hook)相关推荐

  1. 用键盘全局钩子[Hook]监视多进程键盘操作

    用键盘全局钩子[Hook]监视多进程键盘操作 闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况.Hook安放和回调函数放在一个单独DLL中,DLL原码如下: //------- ...

  2. 关于钩子(Hook)的使用

    基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理 ...

  3. mysql 钩子函数_SetWindowsHookEx原理(如何使用钩子,使用钩子hook其他进程的函数)...

    基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理 ...

  4. java hook全局钩子_钩子(hook)

    钩子(hook)编程 一.钩子介绍 1.1钩子的实现机制 钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术.下图是windows应用程序传递消息的过程: 如在 ...

  5. svn添加钩子hook

    svn 提供了钩子功能,可以在提交代码的几个阶段执行脚本. hooks目录下的 pre-commit.tmpl是模板文件 vi pre-commit ------------------------- ...

  6. php扩展实现hook,ThinkPHP3.2 扩展(钩子,HOOK)

    Thinkphp 执行流程 /index.php ->require './ThinkPHP/ThinkPHP.php'; /ThinkPHP/ThinkPHP.php ->require ...

  7. Windows 全局钩子 Hook 详解

    监控程序的实现       我们发现一些木马或其他病毒程序常常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这种功能其他是利用了全局钩子将鼠标或键盘消息进行了截取,从而 ...

  8. SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。

    可以实现SVN本机备份.或者其他备份.关键是可以保持有一份最新的SVN文件可以查看. 实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实 ...

  9. 易语言 钩子 (钩子HOOK与APIHOOK是不一样的)

    钩子 原英文名称 Hook ,钩子的意思是指拦截或截获.作用就是拦截程序中交互的数据,先经过我们预定的钩子处理接口程序,处理过后,再交还给原处理程序,或者干脆阻止,吃掉这些数据,让原处理程序什么也得不 ...

  10. @kubernetes(k8s)pod服务探针(健康检查)及回调钩子HOOK详解

    文章目录 服务探针与回调hook(健康检查) 一.存活性探针(LivenessProbe) 1.存活型检查基本用法 2.存活性探针三种使用方式 [ExecAction] [TCPSocketActio ...

最新文章

  1. SpringBoot框架与MyBatis集成,连接Mysql数据库
  2. BUU[SCTF2019]Who is he
  3. 洞悉linux下的Netfilteriptables
  4. Sphinx的介绍和原理探索
  5. 重构—改善既有代码的设计4——构筑测试体系
  6. java db 使用_JavaDB的基本使用
  7. python中range函数和xrange函数有什么异同?
  8. Java练习 SDUT-1294_选票统计
  9. [PsTools]psexec.exe使用范例-运行远程电脑程序(exe、bat等)
  10. 数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)
  11. MFC通过CImage绘制透明图层的png图片
  12. 数据库实验八 数据库编程
  13. 从host端对Windows虚机进行内存dump和分析
  14. 实现手机来电铃声,通知铃声、警告铃声等音频定制化功能(三,多媒体扫描结果定制处理)
  15. 写给自己的学习计划(迷惘找不到方向的时候就看
  16. 简易性格测试题--你适合什么职业?
  17. 使用MATLAB遍历文件
  18. EasyDial 录音系统
  19. Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
  20. java8 时间加一秒_java8 时间加一秒_java8新的时间日期库及使用示例

热门文章

  1. go学习资料以及开源代码
  2. 拨号之 PPP NDIS RNDIS CDC ECM NCM QMI-WWAN GOBINET RMNET MBIM 区别
  3. 解决(gedit:27306): IBUS-WARNING **: 21:20:05.822: The owner of /home/q/.config/ibus/bus is not root!
  4. 中国央视网---中国公开课
  5. SUP 2.2新特性
  6. 蚂蚁金服是如何实现经典服务化架构向Service Mesh方向演进的?
  7. Mysql原理篇之表空间---05
  8. 在windows 7 虚拟机上安装windows xp系统全过程总结
  9. 开源了一个 JavaScript 版敏感词过滤库
  10. CCleaner如何禁用开机自动启动