0

我的驱动程序中有一个 IRP 和 EPROCESS 对象我想知道如何从这些结构中检索进程权限(如普通管理员系统)?

 KPROCESSOR_MODE ProcessRequestorMode = pIrp->RequestorMode;
        UNICODE_STRING PRM;
        if (ProcessRequestorMode == KernelMode)
            status = RtlInitUnicodeStringEx(&PRM, L"Kernel-Mode");
        else
        {
            status = RtlInitUnicodeStringEx(&PRM, L"User-Mode");
            //////////////////////////TODO////////////////////
            //retrieving process previlage
            //////////////////////////////////////////////////
        }
        DBGMSG1("Processor Mode : %wZ   ", PRM);
        if (!NT_SUCCESS(status))
        {
            DBGMSG0("Can not convert RequestorMode to UNICODE_STRING\n");
            ASSERT(FALSE);
            return status;
        }
4

1 回答 1

0

此信息存储在进程令牌中。
您可以使用PsReferencePrimaryToken来获得它 如果进程正在模拟,您可以使用 PsReferenceImpersonationToken 代替。之后,您只需使用ZwQueryInformationToken查询TokenUser的令牌。

祝你好运,
加布里埃尔

于 2018-02-04T07:51:52.173 回答