driver000
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1594回复:14

filedisk问题请教

楼主#
更多 发布于:2004-01-06 15:43
请问filedisk是不是不能在非管理员权限下用?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-01-06 16:28
常规情况下是不可以的,不过可以自己想办法,饶过微软的保护,与内核驱动通信。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
driver000
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-07 09:47
thanks,那应该怎么实现,有没有人实现过?
常规情况下是不可以的,不过可以自己想办法,饶过微软的保护,与内核驱动通信。。。。。。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-01-07 10:47
通过在你的驱动在GDT中加入CALLGATE,然后在你的用户程序中通过他进入RING0,然后直接IOBUILDDEVICEIOCONTROL,直接找到驱动对象,然后IOCALLDRIVE,我没测试过,不过你可以试试。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-08 14:18
通过在你的驱动在GDT中加入CALLGATE,然后在你的用户程序中通过他进入RING0,然后直接IOBUILDDEVICEIOCONTROL,直接找到驱动对象,然后IOCALLDRIVE,我没测试过,不过你可以试试。。。。。


没有必要吧,让Filedisk静态启动不久可以了吗?
driver000
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-08 15:13
thanks,两位
静态启动是什么意思?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-01-08 16:34
静态启动有什么用,现在的问题是驱动加载了,但是应用层无法同驱动通信,在非ADMINISTRATOR下,是不能DEVICEIOCONTROL的,所以没用,只能通过自己的方法,直接进入RING0去直接找到设备对象,自己分配IRP,自己和内核通信。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
driver000
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-09 09:36
看上去很复杂的说,:)
有没有人这样做过?
thanks
静态启动有什么用,现在的问题是驱动加载了,但是应用层无法同驱动通信,在非ADMINISTRATOR下,是不能DEVICEIOCONTROL的,所以没用,只能通过自己的方法,直接进入RING0去直接找到设备对象,自己分配IRP,自己和内核通信。。。。。。
driver000
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-11 12:21
顶!
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-13 13:07
搞那么复杂干什么?写一个最小的NT Service跟filedisk通讯,然后别的应用程序跟这个Service通讯不就行了?

在应用层处理安全问题还是比较容易的,比如用Socket或Namedpipe甚至SharedMemory都可以.
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
deltali
驱动小牛
驱动小牛
  • 注册日期2002-10-25
  • 最后登录2010-07-06
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-01-13 20:30
非管理员权限下,可以用CreateService启动一个服务吗?
我又来了,生命不息,驱动不止。
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-01-14 20:14
>> 非管理员权限下,可以用CreateService启动一个服务吗?
非管理员权限下,还不可以安装驱动呢。

我的意思是在装驱动的时候装一个NT Service上去(自动用Admin或LocalSystem帐户启动),以后不管用什么帐户登录,和这个Service交互应该没有什么困难的吧?
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
12楼#
发布于:2004-01-14 21:19
如何做呢??请指点一二???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-01-14 23:04
如何做呢??请指点一二???

装Filedisk驱动的时候同时装一个与之对应的User level的NT Service。
NT Service怎么写怎么装就不用我说了吧,主要说说里面干什么。

1、把原来你要在应用程序里使用的DeviceIoControl全部移到这个NT Service应用里。

2、Service设置成Auto Start,不设置登录帐号(就是用LocalSystem了吧,我估计,但这样不能使用NamedPipe之类的IPC)或设置成Administrator(这样IPC手段的选择更多些),根据你的选择,在Service里打开一个Socket或NamedPipe或一片SharedMemory(需要一个或一组命名的Event或Mutex配合使用,当然,在创建MemoryMap或Event或Mutex时要注意那个LPSECURITY_ATTRIBUTES参数需要做一些特殊处理,以便于其它非Admin进程可以使用OpenXXX打开)。

3、剩下的事就简单了,在你自己的应用打开Service正在Listen的IPC通道跟Service通讯(Socket连接或NamedPipe连接或MemoryMapping),告诉Service你想对Filedisk执行的操作,由Service进行DeviceIoControl不就行了。

这样做也许比直接进入ring0代码多些,但容易调试和移植。
有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2004-01-14 23:14
lpServiceStartName 给个NULL就是LocalSystem的账号了。 :D
游客

返回顶部