摘要: 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 ctrl2cap.h代码: 按键输出结果: 程序虽然可以动态卸载,但是要注意的是,停止之后,必须要按下一个键才能彻底退出。 阅读全文
posted @ 2014-11-02 11:58 .....? 阅读(1411) 评论(0) 推荐(0) 编辑
摘要: 4.4 从请求中打印出按键信息 4.4.1 从缓冲区中获得KEYBOARD_INPUT_DATA 请求完成后,读到的信息在Irp_AssociatedIrp.SystemBuffer中。这里需要介绍一下这个缓冲区中的数据格式。这个缓冲区中可能含有n个KEYBOARD_INPUT_DATA 结构(这个 阅读全文
posted @ 2014-11-02 11:50 .....? 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 4.3 键盘过滤的请求处理 4.3.1 通常处理 (1) 最通常的处理就是直接发到真实设备,跳过虚拟设备的处理。这里和前面的串口过滤的方法一样。 注:代码中直接使用了设备扩展。 (2) 与电源相关的IRP处理: (a)在调用IoSkipCurrentIrpStackLocation之前,先调用PoS 阅读全文
posted @ 2014-11-02 11:45 .....? 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 4.1 技术原理 & 4.2 键盘过滤框架 4.1 预备知识 符号链接:符号链接其实就是一个“别名”。可以用一个不同的名字来代表一个设备对象(实际上),符号链接可以指向任何有名字的对象。 ZwCreateFile是很重要的函数。同名的函数实际上有两个:一个在内核中,一个在应用层。所以在应用程序中直接 阅读全文
posted @ 2014-11-02 11:38 .....? 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 在学习汉江独钓一书后,打算总结一下内核编程应该注意的事项,以及有关的一些基础知识。第一次接触内核编程,还真是很生疏,很多东西不能一下马上消化。这里做个回顾总结,好加深自己的印象。 ## 1、内核编程环境 这里涉及到两个模式:内核模式和用户模式。这个可以和CPU的等级联系到一块:ring0,ring1 阅读全文
posted @ 2014-11-02 11:17 .....? 阅读(729) 评论(0) 推荐(1) 编辑