PiAuGetStateDirectorySecurityObject
INT64 __fastcall PiAuGetStateDirectorySecurityObject(CHAR **a1){
VOID *v2;
int v3;
int v4;
UINT32 v5;
struct _ACL *PoolWithTag;
ACL *v7;
int Acl;
PSID v9;
VOID *v10;
unsigned int v11;
VOID *v12;
__int128 SecurityDescriptor[2];
__int64 v15;
UINT64 BufferLength;
memset(SecurityDescriptor, 0, sizeof(SecurityDescriptor));
v15 = 0i64;
v2 = 0i64;
v3 = RtlLengthSid(SeExports->SeUserModeDriversSid);
v4 = RtlLengthSid(SeAliasAdminsSid) + v3;
v5 = RtlLengthSid(SeLocalSystemSid) + 48 + 2 * v4;
PoolWithTag = (struct _ACL *)ExAllocatePoolWithTag(PagedPool, v5, 0x20207050ui64);
v7 = PoolWithTag;
if( PoolWithTag )
{
Acl = RtlCreateAcl(PoolWithTag, v5, 2u);
if( Acl >= 0 )
{
v9 = SeLocalSystemSid;
Acl = RtlpAddKnownAce(v7, 2ui64, 3ui64, 0x10000000ui64, SeLocalSystemSid, 0);
if( Acl >= 0 )
{
v10 = SeAliasAdminsSid;
Acl = RtlpAddKnownAce(v7, 2ui64, 3ui64, 0x80000000ui64, SeAliasAdminsSid, 0);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 2ui64, 0x20ui64, v10, 0);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 3ui64, 0x80000000ui64, SeExports->SeUserModeDriversSid, 0);
if( Acl >= 0 )
{
Acl = RtlpAddKnownAce(v7, 2ui64, 2ui64, 0x20ui64, SeExports->SeUserModeDriversSid, 0);
if( Acl >= 0 )
{
Acl = RtlCreateSecurityDescriptor(SecurityDescriptor, 1ui64);
if( Acl >= 0 )
{
Acl = RtlSetDaclSecurityDescriptor(SecurityDescriptor, 1u, v7, 0);
if( Acl >= 0 )
{
Acl = RtlSetOwnerSecurityDescriptor(SecurityDescriptor, v9, 0);
if( Acl >= 0 )
{
Acl = RtlSetGroupSecurityDescriptor(SecurityDescriptor, v9, 0);
if( Acl >= 0 )
{
if( RtlValidSecurityDescriptor(SecurityDescriptor)
&& (v11 = RtlLengthSecurityDescriptor(SecurityDescriptor),
LODWORD(BufferLength) = v11,
v11 >= 0x28) )
{
v12 = ExAllocatePoolWithTag(PagedPool, v11, 0x20207050ui64);
v2 = v12;
if( v12 )
{
memset((INT64)v12, 0i64);
Acl = RtlAbsoluteToSelfRelativeSD(SecurityDescriptor, v2, &BufferLength);
if( Acl >= 0 )
{
*a1 = (CHAR *)v2;
v2 = 0i64;
}
}
else
{
Acl = -1073741670;
}
}
else
{
Acl = -1073741595;
}
}
}
}
}
}
}
}
}
}
}
ExFreePoolWithTag(v7, 0);
if( v2 )
ExFreePoolWithTag(v2, 0);
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)Acl;
}Referenced by:
PiOpenDirectoryWithRoot