首页
社区
课程
招聘
[原创]windows内核编程之[键盘信息过滤]
发表于: 2016-9-16 20:38 8790

[原创]windows内核编程之[键盘信息过滤]

2016-9-16 20:38
8790

由于前几次发帖没有注明,很多网友在问我,于是我就注明一下:本文参考《windows内核安全与驱动开发》,是一篇读书后的学习笔记。

  概念:键盘过滤,和上次我发过的串口过滤是一样的。同样也是绑定键盘设备,然后拦截过往信息,就能够实现对键盘的监控了。

  技术原理:首先我们需要知道如何绑定设备,绑定设备,在上次串口绑定时是直接通过设备名字找到了设备指针,然后绑定。这次我们的思路是,通过设备栈最顶层的驱动对象名字来打开驱动对象,然后绑定此驱动对象之下的所有设备。一般针对于PS/2键盘,最顶层的驱动对象名字是“KbdClass”。
  那么,如何根据驱动对象名字来打开驱动对象呢?使用API:

NTSTATUS
ObReferenceObjectByName(
  IN PUNICODE_STRING ObjectName,
  IN ULONG Attributes,
  IN PACCESS_STATE PassedAccessState OPTIONAL,
  IN ACCESS_MASK DesiredAccess OPTIONAL,
  IN POBJECT_TYPE ObjectType,
  IN KPROCESSOR_MODE AccessMode,
  IN OUT PVOID ParseContext OPTIONAL,
  OUT PVOID *Object
);
  for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
  {
    KS_driver->MajorFunction[i] = KS_Dispatch;
  }

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (1)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
哈哈 其实Ten****PayKeyboard.sys也是这么做的,作为过滤驱动附加到kbdclass上过滤IRP_MJ_READ、PNP、CREATE这三个
2016-9-19 17:15
0
游客
登录 | 注册 方可回帖
返回
//