本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 3642|回复: 4

ntduplicateobject参数问题! [复制链接]

Rank: 1

发表于 2010-10-13 18:34:26 |显示全部楼层
NTSTATUS
NtDuplicateObject(
  IN  HANDLE SourceProcessHandle
  IN  HANDLE SourceHandle
  IN  HANDLE TargetProcessHandle OPTIONAL
  OUT PHANDLE TargetHandle OPTIONAL
  IN  ACCESS_MASK DesiredAccess
  IN  ULONG HandleAttributes
  IN  ULONG Options
  );

如果SourceHandle为进程句柄,且我要把它复制到目标进程。
我印象中是从进程的ObjectTable找SourceHandle,但我怎么也没有找到指向进程的handle,那么sourcehandle应该从那里索引object呢.

不会是pspcidtable或者sourcehandle 为伪句柄吧,那我就更晕了。

Rank: 4

发表于 2010-10-13 20:38:06 |显示全部楼层
Windows通过SourceProcessHandle得到源进程的私有句柄表(EPROCESS.ObjectHandleTable),并通过SourceHandle找到要复制的对象,然后通过TargetProcessHandle得到目标进程的私有句柄表,在其中找到一个合适的位置放置刚才找到的对象,并返回所在位置的索引,就是*TargetHandle了~~
如果当前进程打开了一个进程句柄,那么句柄仅属于本进程,句柄所指向的进程对象会出现在本进程的句柄表中~~
并且,复制过程没有什么伪句柄~

注意PspCidTable、KernelHandleTable(也就是System进程的句柄表)、进程私有ObjectHandleTable(EPROCESS.ObjectHandleTable)的区别和使用时机,如果不明白,多找些句柄表的资料看一看~~

Rank: 2

发表于 2010-10-13 23:56:16 |显示全部楼层
使用DuplicateHandle的时候可以有伪句柄。

Rank: 4

发表于 2010-10-14 00:34:33 |显示全部楼层
在表示当前进程的时候是可以用0xFFFFFFFF的~

Rank: 1

发表于 2010-10-15 14:55:25 |显示全部楼层
谢教主
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-7-18 22:15 , Processed in 0.030475 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部