-
-
[求助]内核模式NtOpenProcess返回0xc0000005
-
发表于:
2009-7-14 22:59
7157
-
[求助]内核模式NtOpenProcess返回0xc0000005
HANDLE han = NULL;
OBJECT_ATTRIBUTES attr={sizeof(OBJECT_ATTRIBUTES), 0,NULL,NULL};
attr.Attributes=0;
InitializeObjectAttributes(
&attr,
NULL,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
ULONG pid=(ULONG)PsGetCurrentProcessId();
CLIENT_ID pd;
pd.UniqueProcess=(HANDLE)pid;//用传入的参数也出错
pd.UniqueThread=(HANDLE)-1;//用0也出现相同的问题.
KdPrint(("processid=%d\n",pd.UniqueProcess));
NTSTATUS ns=NtOpenProcess(&han,PROCESS_DUP_HANDLE,&attr,&pd);
KdPrint(("ntstatus=%x\n",ns));
if(NT_SUCCESS(ns))
{
KdPrint(("succeed"));
}
else
{
KdPrint(("NtOpenProcess error"));
}
用DbgView观察,每次打开一个进程的时候都是返回0xc0000005,所传入的进程ID是一个普通的进程ID,在Ring3的OpenProcess打开没有问题.
pd.UniqueThread=(HANDLE)0;
之前这里用-1打开不能成功,后来在网上的几个解答要用0,改完用0以后,还是没有解决问题.
进程ID,用外部传入的进程ID也是返回相同的值.
期待有高手能给予解答.谢谢.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!