内核编程键盘过滤几种方法思路整理

第一种:绑定kbdcalss驱动对象

  kbdclass类驱动对象是键盘的最上层的驱动对象,对它的分发函数进行处理,则不用考虑底层的兼容性问题。

  思路:首先使用ObReferenceObjectByName函数打开kbdclass驱动对象,然后使用DeviceObject指针和NextDevice指针遍历kbdclass驱动对象下所有的设备对象,每遍历一个则创建一个设备对象附加在其上,这样我们编写的驱动对象的分发函数,即可处理kbdclass类驱动对象的IRP。如图所示

第二种:直接替换kbdclass的分发函数

第三种:替换i8042prt或Kbdhid驱动对象中kbdclass的回调函数,在i8042prt或Kbdhid驱动对象中首先搜索是否出现了kbdclass类驱动对象,然后搜索是否出现了kbdclass类驱动对象中的函数地址,最后替换掉这个回调函数,如图所示

第四种:修改IDT表中关于0x93中断的处理

第五种:对IOAPIC中断控制器中,irq1对应的中断号替换成0x93之外的中断号(自定义的中断号和处理函数)

 

posted @ 2015-05-04 14:58  银翼的魔术师  阅读(480)  评论(0编辑  收藏  举报