欢迎光临
我们一直在努力

寒江独钓–windows内核安全编程—>第四篇键盘的过滤

预备知识:

符号链接:设备对象的别名,实际上符号链接可以指向任何有名字的设备对象

ZwCreateFile不仅可以打开文件,而且可以打开设备对象这个函数最终调用NtCreateFile

PDO是设备栈最下面的那个设备对象

应用程序是不能直接根据设备名字打开设备的,一般都通过符号链接来打开

我们没有必要关注所有细节,现在我们只需要知道我们现在要去绑定的设备是驱动KbdClass的设备对象就可以了。

键盘过滤的框架:

DRIVER_OBJECT下有DeviceObject->NextDevice,可以表示一个设备链

另一种方法是调用函数IoEnumerateDeviceObejectList,可以枚举出一个驱动对象下所有的设备对象

找到关键回调函数的条件:(windows不可能公开这种函数的地址,所以需要我们自己去找,然后hook或者替换!!!)

1.这个函数指针应该保存在i8042prt生成的设备的自定义扩展中

2.这个函数的开始地址应该在内核模块KbClass中

3.内核模块KbClass生成的设备对象的地址也应该在那个设备扩展中,而且应该在我们要找的函数指针之前

Hook简单而又古老的技术对于截取QQ密码起到了很好的作用

触发的本质:使CPU的执行暂停,并跳到相应的中断处理函数中,中断处理函数保存在内存中,并且地址保存在IDT中,每个中断号在表中都有一项

真正的硬件中断:IRQ

IOAIPC出现后,IRQ和中断号的对应关系可以修改,在多核CPU中,每个核心都有一个IDT,应对每一个核心获取IDT

利用IOAIPC重定位中断处理函数

IOAIPC多核心CPU新型中断控制器

请简述何为IDT?有什么作用?

IDT就是中断描述符,就是一个由中断号和中断处理函数地址构成的表,当系统收到中断时就会查这个表来获取中断函数地址

请问在windows驱动中,键盘主要涉及哪几个驱动程序?

windows下

本章一共讲了哪几种过滤键盘的方法?

1.常见的设备绑定

2.hoo分发函数

3.hook掉IDT表项

4.IOAPIC进行更底层的hook,前提是内核函数的返回值在hook前后没有变化

 

 

 

未经允许不得转载:LinuxBar.org » 寒江独钓–windows内核安全编程—>第四篇键盘的过滤

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Welcome to LinuxBar.org

联系我联系我