我的驱动程序中有一个IRP和EPROCESS对象,我想知道如何从这些结构中检索进程特权(如、normal或Administrator或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;
}发布于 2018-02-04 07:51:52
此信息存储在进程令牌中。
如果进程是模拟的,您可以使用PsReferencePrimaryToken来获得它,您可以使用PsReferenceImpersonationToken代替。之后,您只需使用TokenUser查询令牌。
祝好运,
加布里埃尔
https://stackoverflow.com/questions/47904980
复制相似问题