KiInitializeNxSupportDiscard
VOID __stdcall KiInitializeNxSupportDiscard(){
CHAR v0;
CHAR v1;
__int64 v2;
CHAR v3;
__int64 v4;
CHAR v5;
__int64 v6;
unsigned __int8 v7;
CHAR v8;
__int64 v9;
CHAR v10;
__int64 v11;
__int64 v12;
KUSER_SHARED_DATA.MitigationPolicies = KUSER_SHARED_DATA.MitigationPolicies & 0xFC | 1;
strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"NOEXECUTE=ALWAYSON", v0);
if( !v2 )
{
strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"NOEXECUTE=OPTOUT", v1);
if( v4 )
{
v7 = KUSER_SHARED_DATA.MitigationPolicies | 3;
}
else
{
strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"NOEXECUTE=OPTIN", v3);
if( v6
|| (strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"NOEXECUTE=ALWAYSOFF", v5), !v9)
&& ((strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"NOEXECUTE", v8), v11)
|| (strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"EXECUTE", v10), !v12)) )
{
v7 = KUSER_SHARED_DATA.MitigationPolicies & 0xFC | 2;
}
else
{
v7 = KUSER_SHARED_DATA.MitigationPolicies & 0xFC;
}
}
KUSER_SHARED_DATA.MitigationPolicies = v7;
}
if( (EDX(__cpuid(1, 0)) & 0x4000000) != 0 && (unsigned int)KiGetCpuVendor() == 2 )
byte_140C50A86 = 1;
if( KiIsNXSupported() )
{
__writemsr(0xC0000080, __readmsr(0xC0000080) | 0x800);
KUSER_SHARED_DATA.ProcessorFeatures[12] = 1;
}
}Referenced by:
KiInitializeNXSupport