SeAccessCheckFromStateEx
UINT8 __stdcall SeAccessCheckFromStateEx(
PVOID SecurityDescriptor,
PVOID PrimaryToken,
PVOID ClientToken,
UINT64 DesiredAccess,
UINT64 PreviouslyGrantedAccess,
PRIVILEGE_SET **Privileges,
GENERIC_MAPPING *GenericMapping,
INT8 AccessMode,
UINT64 *GrantedAccess,
INT64 *AccessStatus){
UINT64 DesiredAccessa;
UINT64 v12;
SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
SubjectSecurityContext.PrimaryToken = PrimaryToken;
SubjectSecurityContext.ClientToken = 0i64;
*(_QWORD *)&SubjectSecurityContext.ImpersonationLevel = 0i64;
SubjectSecurityContext.ProcessAuditId = 0i64;
if( ClientToken )
{
SubjectSecurityContext.ImpersonationLevel = *((_DWORD *)ClientToken + 49);
SubjectSecurityContext.ClientToken = ClientToken;
}
LODWORD(v12) = PreviouslyGrantedAccess;
LODWORD(DesiredAccessa) = DesiredAccess;
LOBYTE(DesiredAccess) = 1;
return SeAccessCheckWithHint(
SecurityDescriptor,
0i64,
&SubjectSecurityContext,
DesiredAccess,
DesiredAccessa,
v12,
Privileges,
GenericMapping,
AccessMode,
GrantedAccess,
AccessStatus);
}Referenced by:
SeAccessCheckFromState