教程参考自:https://www.bilibili.com/video/av26193169/?p=8
代码地址:https://github.com/G4rb3n/Windows-Driver/tree/master/MT-FSDHook
1. 概述
FSD钩子是一种较实用的过滤方法,对比于上一章的添加键盘过滤设备,这种方法更显得简单高效。
2. 驱动编写
2.1 驱动入口函数
入口函数简单明了,先获取键盘驱动的对象,然后将键盘驱动的读派遣函数替换我们自己的函数,这样当我们按下一个按键时,系统的键盘驱动就会调用我们的函数来处理按键信息,有种偷梁换柱的感觉。当然,在替换之前别忘了先保存原函数的指针。
2.2 Hook函数
我们的派遣函数很简单,仅作演示效果打印一句话,你要加啥过滤监听的操作的话在这里加。实现完自己的功能后要调用回原始的派遣函数,以实现键盘的正常功能。
2.3 卸载函数
最后是卸载函数,主要功能是把键盘驱动的派遣函数还原回来。
3. 驱动测试
只要我们按下一个键,就会弹出两个提示语句,证明我们的Hook函数的确被调用了,为什么是两个,相比大家也清楚,因为一个是键按下的操作,一个是键弹起的操作。
使用PCHunter也能看到我们挂的钩子。