好比钩吊到了一条大鱼时不管那鱼怎么逃,只要掌握了系在
钩子上的绳子总是可以找到这条鱼。键盘钩子就是利用电脑一条一条执行程序的特点,在处理键盘系统代码段里把某一
指令替换成一个跳转指令,让执行行为转移到自定义的一段代码,在此代码的结尾处再添加那被替换掉的指令,最后转移到原来被替换处的下一条指令处让原来的系统继续运行。好比电路中被串入了电流表,电路功能没有变化,但操作者获得了工作时的电流信息。
狭义钩子:通过
系统调用插入的钩子。钩子的本质是一段用以处理
系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,
钩子程序先行截获该消息、得到对此消息的控制权。此时在
钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 而键盘钩子,只是为了截获键盘消息的。
全局钩子可以捕获在Windows平台下任意窗口上的键盘操作。
广义
钩子:直接修改
指令段获得控制的钩子。这种钩子更强大,理论上可以任意修改计算机的行为。