SeSetMandatoryPolicyToken
INT64 __fastcall SeSetMandatoryPolicyToken(VOID *Token, _TOKEN_MANDATORY_POLICY *MandatoryPolicy){
_ETHREAD *CurrentThread;
signed __int32 v6[10];
if( (MandatoryPolicy->Policy & 0xFFFFFFFC) != 0 )
return 3221225485i64;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(*((ERESOURCE **)Token + 6), 1u);
_InterlockedOr(v6, 0);
*((_TOKEN_MANDATORY_POLICY *)Token + 53) = (_TOKEN_MANDATORY_POLICY)MandatoryPolicy->Policy;
*((_QWORD *)Token + 7) = ExpLuidIncrement + _InterlockedExchangeAdd64(&ExpLuid, ExpLuidIncrement);
_InterlockedOr(v6, 0);
ExReleaseResourceLite(*((PERESOURCE *)Token + 6));
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
return 0i64;
}Referenced by:
NtCreateLowBoxToken
NtSetInformationToken
SeMakeAnonymousLogonToken
SeMakeAnonymousLogonTokenNoEveryone
SeMakeSystemToken