首页
社区
课程
招聘
简单说说给不同的会话发送模拟输入的实现
发表于: 2013-3-25 04:17 4160

简单说说给不同的会话发送模拟输入的实现

2013-3-25 04:17
4160
感觉没什么用但还是分享一下吧

可能很少会有人有这样的需求——给一个远程登录到本机的用户模拟输入。由于不在同一个桌面,通常的SendInput是用不了的,普通点的做法可以写一个辅助程序运行在指定的会话上,不过这样实现有点繁琐,我们来点不普通的,直接找win32k!ProcessMouseInput和ProcessKeyboardInput下手吧,不管是模拟还是真实输入,最终都会由它们来处理。定位这两个函数的过程就略过了,它们都只接收同一个参数PDEVICEINFO,函数的实现和DEVICEINFO的定义可以在WIN2K源码中找到。虽然DEVICEINFO的长度在不同的系统下不太一样,但好在这两个函数就只关心DEVICEINFO中的两个地方,一个是ReadStatus,一个是Data,看一下反汇编的内容可以很快算出实际长度。数据格式跟键盘鼠标驱动用的是一样的,剩下的就是在发送前attach到指定会话上了,可以通过attach到csrss来实现。如果你想过NtUserSendInput检测又不想写一个标准的设备驱动,这招还是可以用用的

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark......................
2013-3-25 09:12
0
雪    币: 244
活跃值: (63)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好吧,还行~
2013-3-25 12:36
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
其实没那么复杂~~应用层就可以搞定...
2013-3-25 13:04
0
游客
登录 | 注册 方可回帖
返回
//