Windows驱动学习(六)-- FSD钩子

教程参考自:https://www.bilibili.com/video/av26193169/?p=8
代码地址:https://github.com/G4rb3n/Windows-Driver/tree/master/MT-FSDHook

1. 概述

FSD钩子是一种较实用的过滤方法,对比于上一章的添加键盘过滤设备,这种方法更显得简单高效。

2. 驱动编写

2.1 驱动入口函数

入口函数简单明了,先获取键盘驱动的对象,然后将键盘驱动的读派遣函数替换我们自己的函数,这样当我们按下一个按键时,系统的键盘驱动就会调用我们的函数来处理按键信息,有种偷梁换柱的感觉。当然,在替换之前别忘了先保存原函数的指针。
Windows驱动学习(六)-- FSD钩子_第1张图片

2.2 Hook函数

我们的派遣函数很简单,仅作演示效果打印一句话,你要加啥过滤监听的操作的话在这里加。实现完自己的功能后要调用回原始的派遣函数,以实现键盘的正常功能。
Windows驱动学习(六)-- FSD钩子_第2张图片

2.3 卸载函数

最后是卸载函数,主要功能是把键盘驱动的派遣函数还原回来。
Windows驱动学习(六)-- FSD钩子_第3张图片

3. 驱动测试

只要我们按下一个键,就会弹出两个提示语句,证明我们的Hook函数的确被调用了,为什么是两个,相比大家也清楚,因为一个是键按下的操作,一个是键弹起的操作。
Windows驱动学习(六)-- FSD钩子_第4张图片

使用PCHunter也能看到我们挂的钩子。
Windows驱动学习(六)-- FSD钩子_第5张图片

你可能感兴趣的:(Windows驱动)