CmpLogHiveFileInaccessible
VOID __fastcall CmpLogHiveFileInaccessible(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
int v4;
INT64 *v6;
char v7;
WCHAR *v8;
void *PrimaryToken;
int v10;
UINT64 StringSecurityDescriptorLen;
PVOID SecurityDescriptor;
WCHAR *StringSecurityDescriptor;
void *FileHandle;
struct _SECURITY_SUBJECT_CONTEXT SubjectContext;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
struct _IO_STATUS_BLOCK IoStatusBlock;
INT64 result[10];
struct _EVENT_DATA_DESCRIPTOR v19;
UINT64 *p_StringSecurityDescriptorLen;
__int64 v21;
char v22[16];
INT64 *v23;
int v24;
int v25;
PVOID *p_SecurityDescriptor;
__int64 v27;
v4 = a2;
memset((INT64)result, 0i64);
v6 = (INT64 *)SeNullSid;
SecurityDescriptor = 0i64;
FileHandle = 0i64;
StringSecurityDescriptor = 0i64;
ObjectAttributes.RootDirectory = 0i64;
IoStatusBlock = 0i64;
v7 = 0;
v8 = 0i64;
memset(&SubjectContext, 0, sizeof(SubjectContext));
*(_QWORD *)&ObjectAttributes.Length = 48i64;
*(_QWORD *)&ObjectAttributes.Attributes = 576i64;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
ObjectAttributes.ObjectName = (_UNICODE_STRING *)a1;
if( ZwOpenFile((UNICODE_STRING *)&FileHandle, (PWCHAR)0x20000) >= 0
&& CmpQueryFileSecurityDescriptor(FileHandle, &SecurityDescriptor) >= 0 )
{
if( (int)SeConvertSecurityDescriptorToStringSecurityDescriptor(
SecurityDescriptor,
(VOID *)1,
0xCui64,
&StringSecurityDescriptor,
&StringSecurityDescriptorLen) >= 0 )
{
SeCaptureSubjectContext(&SubjectContext);
PrimaryToken = SubjectContext.PrimaryToken;
v7 = 1;
if( SubjectContext.ClientToken )
PrimaryToken = SubjectContext.ClientToken;
SeQueryUserSidToken(PrimaryToken, result, 0x44ui64, 0i64);
v6 = result;
}
v8 = StringSecurityDescriptor;
}
if( (unsigned int)dword_140C02130 > 3 && tlgKeywordOn((__int64)&dword_140C02130, 0x200000000008i64) )
{
LODWORD(StringSecurityDescriptorLen) = v4;
p_StringSecurityDescriptorLen = &StringSecurityDescriptorLen;
v21 = 4i64;
tlgCreate1Sz_wchar_t((__int64)v22, v8);
v10 = *((unsigned __int8 *)v6 + 1);
v23 = v6;
v25 = 0;
SecurityDescriptor = (PVOID)0x1000000;
v27 = 8i64;
v24 = 4 * v10 + 8;
p_SecurityDescriptor = &SecurityDescriptor;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C02130,
(unsigned __int8 *)&dword_140022991 + 3,
0i64,
0i64,
6u,
&v19);
}
if( v7 )
SeReleaseSubjectContext(&SubjectContext);
if( v8 )
ExFreePoolWithTag(v8, 0);
if( FileHandle )
ZwClose(FileHandle);
}Referenced by:
CmpOpenHiveFile