我的驱动程序中有一个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;
}
答案 0 :(得分:0)
此信息存储在流程令牌中 你可以使用PsReferencePrimaryToken获得 如果该过程是模拟的,则可以使用PsReferenceImpersonationToken。 之后,您只需使用ZwQueryInformationToken查询 TokenUser 的令牌。
祝你好运,