ObpCreateDefaultObjectTypeSD
VOID __fastcall ObpCreateDefaultObjectTypeSD(INT64 a1, UINT8 *a2){
int v3;
int v4;
__int64 v5;
char *PoolWithTag;
char *v7;
int v8;
v3 = RtlLengthSid(SeWorldSid);
v4 = RtlLengthSid(SeAliasAdminsSid) + v3;
v5 = v4 + (unsigned int)RtlLengthSid(SeLocalSystemSid) + 44;
PoolWithTag = (char *)ExAllocatePoolWithTag(PagedPool, v5 + 20, 0x6C636144ui64);
v7 = PoolWithTag;
if( PoolWithTag )
{
v8 = (_DWORD)PoolWithTag + 20;
*(_OWORD *)PoolWithTag = 0i64;
*((_DWORD *)PoolWithTag + 4) = 0;
*PoolWithTag = 1;
memset((INT64)(PoolWithTag + 20), 0i64);
if( RtlCreateAcl((PACL)(v7 + 20), v5, 2u) < 0
|| (int)RtlpAddKnownAce((_ACL *)(v7 + 20), 2ui64, 0i64, 0xF0001ui64, SeWorldSid, 0) < 0
|| (int)RtlpAddKnownAce((_ACL *)(v7 + 20), 2ui64, 0i64, 0xF0001ui64, SeAliasAdminsSid, 0) < 0
|| (int)RtlpAddKnownAce((_ACL *)(v7 + 20), 2ui64, 0i64, 0xF0001ui64, SeLocalSystemSid, 0) < 0 )
{
ExFreePoolWithTag(v7, 0);
}
else
{
*((_WORD *)v7 + 1) |= 0x8004u;
*((_DWORD *)v7 + 4) = v8 - (_DWORD)v7;
*(_QWORD *)a1 = v7;
}
}
}Referenced by:
ObpInitObjectTypeSD