首页
社区
课程
招聘
很久没来这里发帖了,提个最近碰到的问题
发表于: 2008-3-25 14:09 5233

很久没来这里发帖了,提个最近碰到的问题

2008-3-25 14:09
5233
最近调试某软件时发现其Display Driver中DrvEnableDriver设置了index = 77L、即标号为INDEX_DrvReserved1的支持例程,调试win32k后发现win32k在NtUserRemoteConnect中载入了Display Driver,并在ldevLoadDriver返回之前以四个参数调用了这个保留的支持例程(xp_2600_2180的代码位置如下)

text:BF8942E6 loc_BF8942E6:                           ; CODE XREF: ldevLoadDriver(ushort *,_LDEVTYPE)+BCj
.text:BF8942E6                 push    ?G_PerformanceStatistics@@3PAEA ; uchar * G_PerformanceStatistics
.text:BF8942EC                 push    ?G_RemoteVideoFileObject@@3PAU_FILE_OBJECT@@A ; _FILE_OBJECT * G_RemoteVideoFileObject
.text:BF8942F2                 push    ?G_RemoteConnectionFileObject@@3PAU_FILE_OBJECT@@A ; _FILE_OBJECT * G_RemoteConnectionFileObject
.text:BF8942F8                 push    ?G_RemoteConnectionChannel@@3PAXA ; void * G_RemoteConnectionChannel
.text:BF8942FE                 call    eax

我想找一下关于这个例程的资料,可惜wrk里面貌似没有任何相关的说明

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
以下只是我个人的一点分析,未经验证,仅供参考。

4个参数的作用:
[1] 获取远程视频通道句柄,即ghRemoteVideoChannel,这是个全局变量
[2] 根据ghRemoteVideoChannel取得文件对象
[3] 根据文件对象获取设备对象
[4] 未知

猜想这个调用的作用:首先依次调用前面4个参数所指向的函数获取设备对象,然后初始化多用户Session环境,使用GreDeviceIoControl想视频设备发送IOCTL_VIDEO_ICA_ENABLE_GRAPHICS命令(估摸着是启动视频设备的图形绘制功能),然后初始化设备以及相关资源。

具体可以参考win2000源码RemoteConnect
虽然代码结构与你所列举的xp完全不同,不过原理应该类似。
2008-3-25 23:44
0
游客
登录 | 注册 方可回帖
返回
//