EtwTimLogProhibitNonMicrosoftBinaries
VOID __fastcall EtwTimLogProhibitNonMicrosoftBinaries(INT64 a1, INT64 a2, CHAR r8_0, CHAR a4, UINT16 *a5){
__int64 *v5;
__int64 *v6;
const wchar_t *v7;
int v8;
unsigned __int16 v10;
int v11;
const wchar_t *v12;
int v13;
__int16 v14;
int v15;
int v16;
UINT16 *v17;
int v18;
unsigned int v19;
__int64 v20;
unsigned int v21;
unsigned int v22;
__int64 v23;
unsigned int v24;
unsigned int v25;
__int16 v26;
__int64 v27;
__int64 v28;
UINT64 v29;
EVENT_DESCRIPTOR *v30;
PVOID v31;
CHAR v32;
CHAR v33;
__int16 v34[2];
__int16 v35;
__int16 v36;
int v37;
UINT64 a3;
PVOID P[2];
UINT64 v40;
struct _EVENT_DATA_DESCRIPTOR v41;
int *v42;
__int64 v43;
int *v44;
__int64 v45;
__int64 v46;
int v47[2];
int *v48;
__int64 v49;
PVOID v50;
int v51[2];
UINT64 *v52;
__int64 v53;
int *v54;
__int64 v55;
__int64 v56;
int v57[2];
CHAR *v58;
__int64 v59;
CHAR *v60;
__int64 v61;
EVENT_DATA_DESCRIPTOR UserData;
const wchar_t *v63;
int v64;
int v65;
__int16 *v66;
__int64 v67;
const wchar_t *v68;
int v69;
int v70;
__int64 v71[24];
CHAR v72;
CHAR v73;
v73 = a4;
v72 = r8_0;
v5 = *(__int64 **)(a2 + 1472);
v6 = &EmptyUnicodeString;
v7 = L"(null)";
a3 = 0i64;
v8 = a1;
if( v5 )
v6 = v5;
*(_OWORD *)P = 0i64;
v10 = *(_WORD *)v6;
*(_QWORD *)&UserData.Size = 2i64;
if( v10 )
{
v34[0] = v10 >> 1;
UserData.Ptr = (unsigned __int64)v34;
v11 = *(unsigned __int16 *)v6;
v12 = (const wchar_t *)v6[1];
}
else
{
v34[0] = 6;
UserData.Ptr = (unsigned __int64)v34;
v12 = L"(null)";
v11 = 12;
}
v63 = v12;
v64 = v11;
v65 = 0;
EtwpQueryProcessCommandLine((_EPROCESS *)a2, (_UNICODE_STRING *)P);
v67 = 2i64;
v66 = &v35;
if( LOWORD(P[0]) )
{
v68 = (const wchar_t *)P[1];
v13 = LOWORD(P[0]);
v14 = LOWORD(P[0]) >> 1;
}
else
{
v13 = 12;
v68 = L"(null)";
v14 = 6;
}
v35 = v14;
v69 = v13;
v70 = 0;
v15 = EtwpTiFillProcessIdentity(v71, a2, &a3);
v16 = EtwpTiFillThreadIdentity((INT64)(&UserData + (unsigned int)(v15 + 4)), (INT64)KeGetCurrentThread());
v17 = a5;
v19 = v16 + v18;
v20 = 2i64 * v19;
v21 = v19 + 1;
*(&UserData.Ptr + v20) = (unsigned __int64)&v72;
*((_QWORD *)&UserData.Size + v20) = 1i64;
v22 = v21 + 1;
v23 = 2i64 * v21;
*(&UserData.Ptr + v23) = (unsigned __int64)&v73;
*((_QWORD *)&UserData.Size + v23) = 1i64;
if( v17 && *v17 )
{
v7 = (const wchar_t *)*((_QWORD *)v17 + 1);
v24 = v21 + 2;
v25 = *v17;
v26 = *v17 >> 1;
}
else
{
v25 = 12;
v24 = v21 + 2;
v26 = 6;
}
v36 = v26;
v27 = 2i64 * v22;
v28 = 2i64 * v24;
v29 = v24 + 1;
*(&UserData.Ptr + v27) = (unsigned __int64)&v36;
*((_QWORD *)&UserData.Size + v27) = 2i64;
*(&UserData.Ptr + v28) = (unsigned __int64)v7;
*(&UserData.Size + 2 * v28) = v25;
v30 = (EVENT_DESCRIPTOR *)MITIGATION_AUDIT_PROHIBIT_NON_MICROSOFT_BINARIES;
if( v8 != 1 )
v30 = (EVENT_DESCRIPTOR *)&MITIGATION_ENFORCE_PROHIBIT_NON_MICROSOFT_BINARIES;
*(&UserData.Reserved + 2 * v28) = 0;
EtwWrite(EtwSecurityMitigationsRegHandle, v30, 0i64, v29, &UserData);
v31 = P[1];
if( (unsigned int)dword_140C02BB0 > 5 && tlgKeywordOn((__int64)&dword_140C02BB0, 0x400000000000i64) )
{
v37 = v8;
v42 = &v37;
v43 = 4i64;
v44 = v47;
v46 = v6[1];
v47[0] = *(unsigned __int16 *)v6;
v48 = v51;
v51[0] = LOWORD(P[0]);
v40 = a3;
v52 = &v40;
v54 = v57;
v56 = *((_QWORD *)v17 + 1);
v57[0] = *v17;
v32 = v72;
v58 = &v32;
v33 = v73;
v60 = &v33;
v45 = 2i64;
v47[1] = 0;
v49 = 2i64;
v50 = v31;
v51[1] = 0;
v53 = 8i64;
v55 = 2i64;
v57[1] = 0;
v59 = 1i64;
v61 = 1i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C02BB0,
(unsigned __int8 *)word_14002C402,
0i64,
0i64,
0xCu,
&v41);
}
if( v31 )
ExFreePoolWithTag(v31, 0);
}Referenced by:
MiValidateSectionSigningPolicy