如何反复进程权限(Windows驱动程序)?

时间:2017-12-20 11:27:44

标签: c wdm filter-driver

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

 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;
        }

1 个答案:

答案 0 :(得分:0)

此信息存储在流程令牌中 你可以使用PsReferencePrimaryToken获得 如果该过程是模拟的,则可以使用PsReferenceImpersonationToken。 之后,您只需使用ZwQueryInformationToken查询 TokenUser 的令牌。

祝你好运,
加布里埃尔