SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1662回复:7

第一位答对的给40分!!!

楼主#
更多 发布于:2002-07-15 10:55
如何让一个普通进程写访问一个Service创建的内存映射文件?同样的问题,一个Service程序创建的内核对象如Event,如何在一个进程中用Modify_State权限打开并Set?

答对的奉送40分。
写驱动不如买足彩!!
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-15 11:01
什么service?
是2000的服务?不是驱动?
服务和普通进程没什么区别啊
如果是驱动,去看ZwOpenSection in DDK 和File Mapping API in msdn
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-15 13:29
 
什么service?
是2000的服务?不是驱动?
服务和普通进程没什么区别啊
如果是驱动,去看ZwOpenSection in DDK 和File Mapping API in msdn

不是驱动,就是2000的服务。
Service和普通进程还是不同的,至少表现在我前面说的那个问题,服务创建的内核对象对普通进程是只读的,即使使用读写属性创建。一般返回的错误是权限不够,但我曾试着修改普通进程的权限,比如打开Debug权限或者Security权限等,都是同样的问题。

不过抱歉的很,我倒没有试着组合多个权限,有空试试。

各位请各位老大不吝赐教。
写驱动不如买足彩!!
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-07-15 13:32
修改DACL
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-15 13:33
有这个问题?
我以前倒真不知道。
你要是有答案了贴出来让大家分享啊
但你要写它干什么呢?如果服务是你自己写的,你可以进程通讯让服务做啊
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-07-15 14:04
easy.
SECURITY_ATTRIBUTES SecuAttr = {0};
char SecurityDescriptorData[SECURITY_DESCRIPTOR_MIN_LENGTH] = {0};

SecuAttr.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR) SecurityDescriptorData);
InitializeSecurityDescriptor(SecuAttr.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION));
SetSecurityDescriptorDacl(SecuAttr.lpSecurityDescriptor, TRUE, (PACL) NULL, FALSE);
SecuAttr.nLength = sizeof(SecuAttr);
SecuAttr.bInheritHandle = FALSE;

hndShareMem = GlobalCreateFileMapping( INVALID_HANDLE_VALUE,
&SecuAttr,
PAGE_READWRITE | SEC_COMMIT,
0,
sizeof(xxxxxx),
yyyy);

pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-15 14:04
如何让一个普通进程写访问一个Service创建的内存映射文件?同样的问题,一个Service程序创建的内核对象如Event,如何在一个进程中用Modify_State权限打开并Set?

答对的奉送40分。


简单方向:
权限之争。
方法很多,比如:
1、服务创建对象时设置好SD,而非用默认的
2、服务试你写的话让它为客户进程DuplicateHandle
3、让客户进程拥有Tcb特权,首先要有administrator权限或利用漏洞,麻烦

等等
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-15 20:18
多谢各位老大,小弟对DACL之类的东西几乎一无所知,以后有空还得向各位请教。只是这次得食言了,根据各位的解答,xdjm仁兄肯定是答对了,可要把这40分都给了您,似乎对不住后面的两位,还是匀些出来吧,呵呵。

不好意思,原先把分数设少了,干脆每位送上20分吧。

版主大哥也这么关心,送几分意思意思吧。


[编辑 -  7/15/02 by  TonyHuyan]
写驱动不如买足彩!!
游客

返回顶部