SeMakeSystemToken
VOID *__stdcall SeMakeSystemToken(){
__int64 v0;
unsigned int v1;
signed __int64 v2;
unsigned int v3;
VOID *TokenSource;
VOID *SystemToken;
unsigned int v6;
int v7;
unsigned int v8;
unsigned int v9;
VOID **PoolWithTag;
UINT64 v11;
_ACL *v12;
unsigned int v13;
VOID **v14;
UINT64 v15;
_ACL *v16;
VOID **v17;
VOID **v18;
_OBJECT_ATTRIBUTES *v19;
_LUID *v20;
__int64 *v22;
__int64 v23;
__int64 v24;
_ACL *v25;
int v26[8];
__int64 AceType;
UINT64 AccessMask;
_LUID_AND_ATTRIBUTES *Privileges;
VOID *PrimaryGroup;
_ACL *DefaultDacl;
_TOKEN_SOURCE *v32;
UINT8 v33;
_TOKEN_MANDATORY_POLICY MandatoryPolicy;
__int64 v35;
UINT64 GroupsLength;
VOID *TokenHandle;
_SID_AND_ATTRIBUTES PrivilegeCount;
__m128i si128;
_OBJECT_ATTRIBUTES ExpirationTime;
_LUID v41;
int v42;
_LUID v43;
int v44;
__int64 v45;
int v46;
_LUID v47;
int v48;
_LUID v49;
int v50;
_LUID v51;
int v52;
_LUID v53;
int v54;
_LUID v55;
int v56;
_LUID v57;
int v58;
_LUID v59;
int v60;
__int64 v61;
int v62;
_LUID v63;
int v64;
_LUID v65;
int v66;
__int64 v67;
int v68;
_LUID v69;
int v70;
_LUID v71;
int v72;
_LUID v73;
int v74;
_LUID v75;
int v76;
_LUID v77;
int v78;
_LUID v79;
int v80;
__int64 v81;
int v82;
__int64 v83;
int v84;
__int64 v85;
int v86;
_LUID v87;
int v88;
__int64 v89;
int v90;
__int64 v91;
int v92;
__int64 v93;
int v94;
_LUID v95;
int v96;
__int64 v97;
int v98;
_LUID v99;
int v100;
__int64 v101;
int v102;
PVOID Owner;
int v104;
PVOID v105;
int v106;
__int64 v107;
int v108;
__int64 v109;
int v110;
v0 = *(&ExBootDevicesRemovedEvent + 103);
TokenHandle = 0i64;
*(&PrivilegeCount.Attributes + 1) = 0;
*(&ExpirationTime.Length + 1) = 0;
MandatoryPolicy.Policy = 1;
*(&ExpirationTime.Attributes + 1) = 0;
GroupsLength = 0i64;
v35 = 0i64;
si128 = _mm_load_si128((const __m128i *)&_xmm);
if( !*(&ExBootDevicesRemovedEvent + 103) || !**(&ExBootDevicesRemovedEvent + 103) )
{
RtlpTimeFieldsToTimeNoLeapSeconds(si128.m128i_i16, &GroupsLength);
goto LABEL_6;
}
v1 = *(_DWORD *)(*(&ExBootDevicesRemovedEvent + 103) + 4i64);
_InterlockedOr(v26, 0);
if( !RtlpTimeFieldsToTimeNoLeapSeconds(si128.m128i_i16, &v35) )
goto LABEL_6;
v2 = v35;
v3 = 0;
if( !v1 )
goto LABEL_5;
v22 = (__int64 *)(v0 + 8);
while( 1 )
{
v23 = *v22;
if( *v22 >= 0 )
{
if( v2 < v23 + 10000000 )
{
if( v2 < v23 )
goto LABEL_5;
v2 = 2 * v2 - v23;
}
else
{
v2 += 10000000i64;
}
goto LABEL_18;
}
v24 = v23 & 0x7FFFFFFFFFFFFFFFi64;
if( v2 < v24 + 10000000 )
break;
v2 -= 10000000i64;
LABEL_18:
++v3;
++v22;
if( v3 >= v1 )
goto LABEL_5;
}
if( v2 < v24 )
LABEL_5:
GroupsLength = v2;
LABEL_6:
TokenSource = SeAliasAdminsSid;
SystemToken = SeLocalSystemSid;
v106 = 7;
v108 = 7;
v105 = SeWorldSid;
PrivilegeCount.Sid = SeLocalSystemSid;
PrivilegeCount.Attributes = 0;
Owner = SeAliasAdminsSid;
v107 = SeAuthenticatedUsersSid;
v109 = SeSystemMandatorySid;
v104 = 14;
v110 = 96;
v6 = ((4 * *(unsigned __int8 *)(SeAuthenticatedUsersSid + 1) + 11) & 0xFFFFFFFC)
+ ((4 * *((unsigned __int8 *)SeWorldSid + 1) + 11) & 0xFFFFFFFC)
+ ((4 * *((unsigned __int8 *)SeAliasAdminsSid + 1) + 11) & 0xFFFFFFFC);
v7 = *(unsigned __int8 *)(SeSystemMandatorySid + 1);
v42 = 3;
v44 = 0;
v46 = 0;
v48 = 3;
v41 = SeTcbPrivilege;
v8 = v6 + ((4 * v7 + 11) & 0xFFFFFFFC) + 16;
v43 = SeCreateTokenPrivilege;
v45 = SeTakeOwnershipPrivilege;
v47 = SeCreatePagefilePrivilege;
v49 = SeLockMemoryPrivilege;
v51 = SeAssignPrimaryTokenPrivilege;
v53 = SeIncreaseQuotaPrivilege;
v55 = SeIncreaseBasePriorityPrivilege;
v57 = SeCreatePermanentPrivilege;
v59 = SeDebugPrivilege;
v61 = SeAuditPrivilege;
v63 = SeSecurityPrivilege;
v65 = SeSystemEnvironmentPrivilege;
v67 = SeChangeNotifyPrivilege;
v69 = SeBackupPrivilege;
v71 = SeRestorePrivilege;
v50 = 3;
v52 = 0;
v54 = 0;
v56 = 3;
v58 = 3;
v60 = 3;
v62 = 3;
v64 = 0;
v66 = 0;
v68 = 3;
v70 = 0;
v73 = SeShutdownPrivilege;
v75 = SeLoadDriverPrivilege;
v77 = SeProfileSingleProcessPrivilege;
v79 = SeSystemtimePrivilege;
v81 = SeUndockPrivilege;
v83 = SeManageVolumePrivilege;
v85 = SeImpersonatePrivilege;
v87 = SeCreateGlobalPrivilege;
v89 = SeTrustedCredManAccessPrivilege;
v91 = SeRelabelPrivilege;
v93 = SeIncreaseWorkingSetPrivilege;
v95 = SeTimeZonePrivilege;
v97 = SeCreateSymbolicLinkPrivilege;
v99 = SeSystemProfilePrivilege;
v78 = 3;
v86 = 3;
v88 = 3;
v94 = 3;
v96 = 3;
v98 = 3;
v100 = 3;
v102 = 3;
v101 = SeDelegateSessionUserImpersonatePrivilege;
v72 = 0;
v74 = 0;
v76 = 0;
v80 = 0;
v82 = 0;
v84 = 0;
v90 = 0;
v92 = 0;
v9 = 4 * *((unsigned __int8 *)SeLocalSystemSid + 1) + 24;
PoolWithTag = ExAllocatePoolWithTag(1ui64, v9, 1665230163i64);
v12 = (_ACL *)PoolWithTag;
if( PoolWithTag )
{
RtlCreateAcl((PACL)PoolWithTag, (_ACL)v9, 2ui64, v11);
v13 = 4 * *((unsigned __int8 *)SeProcTrustWinTcbSid + 1) + 24;
v14 = ExAllocatePoolWithTag(1ui64, v13, 1665230163i64);
v16 = (_ACL *)v14;
if( v14 )
{
RtlCreateAcl((PACL)v14, (_ACL)v13, 2ui64, v15);
RtlAddAccessAllowedAce(v12, 2ui64, 983551, SeLocalSystemSid);
LODWORD(AccessMask) = 131096;
RtlAddProcessTrustLabelAce(v16, 2ui64, 0i64, SeProcTrustWinTcbSid, 0x14u, AccessMask);
v17 = ExAllocatePoolWithTag(1ui64, 0x28ui64, 1683187027i64);
v18 = v17;
if( v17 )
{
RtlCreateSecurityDescriptor(v17, 1ui64);
RtlSetDaclSecurityDescriptor(v18, 1u, v12, 0);
RtlSetSaclSecurityDescriptor(v18, 1u, v16, 0);
RtlSetOwnerSecurityDescriptor(v18, SeAliasAdminsSid, 0);
RtlSetGroupSecurityDescriptor(v18, SeAliasAdminsSid, 0);
ExpirationTime.Length = 48;
memset(&ExpirationTime.RootDirectory, 0, 20);
ExpirationTime.SecurityQualityOfService = 0i64;
LODWORD(DefaultDacl) = 31;
LODWORD(PrimaryGroup) = v8;
LODWORD(Privileges) = 4;
ExpirationTime.SecurityDescriptor = v18;
SepCreateToken(
&TokenHandle,
v19,
v20,
&ExpirationTime,
(_TOKEN_TYPE)AceType,
(_SECURITY_IMPERSONATION_LEVEL)AccessMask,
(_SID_AND_ATTRIBUTES *)&SeSystemAuthenticationId,
(_LARGE_INTEGER *)&GroupsLength,
&PrivilegeCount,
Privileges,
&Owner,
PrimaryGroup,
DefaultDacl,
&v41,
TokenSource,
SystemToken,
SeSystemDefaultDacl,
v32,
v33);
SeSetMandatoryPolicyToken(TokenHandle, &MandatoryPolicy);
ExFreePoolWithTag(v12, 0);
ExFreePoolWithTag(v16, 0);
ExFreePoolWithTag(v18, 0);
return TokenHandle;
}
ExFreePoolWithTag(v12, 0);
v25 = v16;
}
else
{
v25 = v12;
}
ExFreePoolWithTag(v25, 0);
}
return 0i64;
}Referenced by:
SepInitializationPhase0