如何检索进程权限(windows 驱动程序)?
How retrive Process Privilege (windows drivers)?
我的驱动程序中有一个 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;
}
此信息存储在进程令牌中。
你可以使用 PsReferencePrimaryToken
如果该进程正在模拟,您可以改用 PsReferenceImpersonationToken。
之后,您只需使用 ZwQueryInformationToken.
查询 TokenUser 的令牌
祝你好运,
加布里埃尔
我的驱动程序中有一个 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;
}
此信息存储在进程令牌中。
你可以使用 PsReferencePrimaryToken
如果该进程正在模拟,您可以改用 PsReferenceImpersonationToken。
之后,您只需使用 ZwQueryInformationToken.
祝你好运,
加布里埃尔