SeCheckPrivilegedObject
UINT8 __stdcall SeCheckPrivilegedObject(
_LUID PrivilegeValue,
VOID *ObjectHandle,
UINT64 DesiredAccess,
INT64 PreviousMode){
INT8 v4;
unsigned int v5;
INT8 v7;
UINT8 v8;
_SECURITY_SUBJECT_CONTEXT SubjectContext;
PRIVILEGE_SET RequiredPrivileges;
RequiredPrivileges.Privilege[0].Attributes = 0;
RequiredPrivileges.Privilege[0].Luid = PrivilegeValue;
RequiredPrivileges.PrivilegeCount = 1;
memset(&SubjectContext, 0, sizeof(SubjectContext));
RequiredPrivileges.Control = 1;
v4 = PreviousMode;
v5 = DesiredAccess;
SeCaptureSubjectContext((INT64)&SubjectContext);
v7 = SePrivilegeCheck((UINT64 *)&RequiredPrivileges.PrivilegeCount, (INT64)&SubjectContext, v4);
v8 = v7;
if( v4 )
SePrivilegeObjectAuditAlarm(
(UINT64)ObjectHandle,
(INT64 *)&SubjectContext,
v5,
(UINT64 *)&RequiredPrivileges.PrivilegeCount,
v7,
v4);
SeReleaseSubjectContext(&SubjectContext);
return v8;
}Referenced by:
NtSetInformationJobObject
NtSetInformationProcess
NtSetInformationThread
PspAssignPrimaryToken
PspSetProcessPriorityClass