首页
课程
问答
CTF
社区
招聘
看雪峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
看雪峰会
看雪商城
证书查询
看雪社区
编程技术
发新帖
1
0
[已解决]一个键盘过滤驱动的问题
2009-9-3 23:33
7054
[已解决]一个键盘过滤驱动的问题
aliwy
2009-9-3 23:33
7054
有A和B两个键盘过滤驱动,
都Attach到KeyboardClass0,
其中A在B之后Attach,
但为何A截获到的扫描码不是原始的,
而还是被B过滤过的呢?
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!
收藏
・
1
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
最新回复
(
11
)
寒冰心结
雪 币:
7513
活跃值:
(2116)
能力值:
( LV3,RANK:20 )
在线值:
发帖
15
回帖
238
粉丝
0
关注
私信
寒冰心结
2009-9-4 03:24
2
楼
0
这不是开玩笑嘛。。
肯定是后截获了。
你要知道堆栈的成长方向跟IRP的传递过程。。
当CPU感受到外部中断。。就是说。知道外部有输入了。
于是构造一个IRP。发给键盘驱动去处理这个事情。
IRP。从栈顶而下。一层一层的到达最底端的物理键盘设备驱动(假设的。)
等获取了信息。再从物理键盘设备驱动原路一层一层的返回。
B在A下面(B先Attach)。。返回的时候肯定是B先获得了。
注释:以上说法纯个人通俗理解。非官方文档。仅作参考。
achillis
雪 币:
7651
活跃值:
(493)
能力值:
( LV9,RANK:610 )
在线值:
发帖
32
回帖
2032
粉丝
46
关注
私信
achillis
15
2009-9-4 06:17
3
楼
0
过滤驱动之间也是有层次关系的,后来者居上,它最先接到Irp,但返回时则是最后一个
aliwy
雪 币:
26
活跃值:
(28)
能力值:
( LV2,RANK:10 )
在线值:
发帖
20
回帖
141
粉丝
0
关注
私信
aliwy
2009-9-4 08:34
4
楼
0
就是类似这样的关系:
—KeyboardClass0
│
—B Device
│
—A Device
是不是可以这样理解:
按键信息首先传递到A,然后是B,最后到达键盘驱动,
我们在A中调用KdPrint打印的时候,
打印出的扫描码则是由键盘驱动传递到B,B再传递到A,
最终打印出的扫描码就是经过B过滤了的。
是这样吗?
achillis
雪 币:
7651
活跃值:
(493)
能力值:
( LV9,RANK:610 )
在线值:
发帖
32
回帖
2032
粉丝
46
关注
私信
achillis
15
2009-9-4 10:23
5
楼
0
那个层次关系直接用DeviceTree就可以看到了~
aliwy
雪 币:
26
活跃值:
(28)
能力值:
( LV2,RANK:10 )
在线值:
发帖
20
回帖
141
粉丝
0
关注
私信
aliwy
2009-9-4 16:30
6
楼
0
既然它最先接到Irp,那为何此时KdPrint出来的不是实际的扫描码呢?
achillis
雪 币:
7651
活跃值:
(493)
能力值:
( LV9,RANK:610 )
在线值:
发帖
32
回帖
2032
粉丝
46
关注
私信
achillis
15
2009-9-4 18:31
7
楼
0
它第一次接到Irp的时候里面还没有数据呢,所以要设置完成例程继续发下去啊,等Irp带着数据返回时,它的完成例程才有机会处理数据,不过这时候的数据已经是底层驱动的完成例程处理过的了
aliwy
雪 币:
26
活跃值:
(28)
能力值:
( LV2,RANK:10 )
在线值:
发帖
20
回帖
141
粉丝
0
关注
私信
aliwy
2009-9-4 22:32
8
楼
0
哦,明白了,以前一直理解反了,谢谢
achillis。
我记得好像在哪本书上看过,介绍以前QQ的密码输入驱动保护,
说它是在开始输入密码时才挂接,所以就防止了盗号,
所以我一直以为在最外层的才是截获到最初的扫描码。
achillis
雪 币:
7651
活跃值:
(493)
能力值:
( LV9,RANK:610 )
在线值:
发帖
32
回帖
2032
粉丝
46
关注
私信
achillis
15
2009-9-5 00:15
9
楼
0
那得看数据的流向了,如果数据是从上往下,那么最顶层的设备确实是最先接触到数据的,比如文件防删,待删除的文件的信息数据是从上往下传的;在这个例子里,从上往下的是请求,真正的数据是从下往上传的,所以就变成最底层的设备先接触数据了,道理很简单啊
Fypher
雪 币:
636
活跃值:
(174)
能力值:
( LV9,RANK:260 )
在线值:
发帖
20
回帖
251
粉丝
7
关注
私信
Fypher
4
2009-9-5 08:35
10
楼
0
唉……我来给你解释吧。做个通俗的比喻:
我、A、B、苹果商,四个人排成一排,我想要苹果(按键信息),传个篮子(IRP)给A,A传给B,B传给苹果商,苹果商放了一个苹果在篮子里(用按键信息填充IRP),然后把篮子原路往回传给B,B把篮子里的苹果换成了梨(截获、更改了按键信息),所以传给A的时候,篮子里的内容已经变了。
aliwy
雪 币:
26
活跃值:
(28)
能力值:
( LV2,RANK:10 )
在线值:
发帖
20
回帖
141
粉丝
0
关注
私信
aliwy
2009-9-7 15:23
11
楼
0
谢谢各位,明白了!
DebugFan
雪 币:
97
活跃值:
(30)
能力值:
( LV2,RANK:140 )
在线值:
发帖
6
回帖
41
粉丝
2
关注
私信
DebugFan
3
2009-9-19 14:12
12
楼
0
不错不错,描述得相当生动
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
aliwy
20
发帖
141
回帖
10
RANK
关注
私信
他的文章
[求助]关于“谍客”病毒的一点疑问
4526
大家看看MeChat这个主程序是否加壳了?
3619
[已解决]一个键盘过滤驱动的问题
7055
[原创]蠢人节快乐
2191
[求助]用了自旋锁,数据还是丢失,蓝屏!
5690
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
返回
顶部