KiInitializeNxSupportDiscard
INT64 __stdcall KiInitializeNxSupportDiscard(){
unsigned __int8 v0;
INT64 result;
KUSER_SHARED_DATA.MitigationPolicies = KUSER_SHARED_DATA.MitigationPolicies & 0xFC | 1;
if( !strstr(*((CHAR **)KeLoaderBlock_0 + 27), "NOEXECUTE=ALWAYSON") )
{
if( strstr(*((CHAR **)KeLoaderBlock_0 + 27), "NOEXECUTE=OPTOUT") )
{
v0 = KUSER_SHARED_DATA.MitigationPolicies | 3;
}
else if( strstr(*((CHAR **)KeLoaderBlock_0 + 27), "NOEXECUTE=OPTIN")
|| !strstr(*((CHAR **)KeLoaderBlock_0 + 27), "NOEXECUTE=ALWAYSOFF")
&& (strstr(*((CHAR **)KeLoaderBlock_0 + 27), "NOEXECUTE")
|| !strstr(*((CHAR **)KeLoaderBlock_0 + 27), "EXECUTE")) )
{
v0 = KUSER_SHARED_DATA.MitigationPolicies & 0xFC | 2;
}
else
{
v0 = KUSER_SHARED_DATA.MitigationPolicies & 0xFC;
}
KUSER_SHARED_DATA.MitigationPolicies = v0;
}
if( (EDX(__cpuid(1, 0)) & 0x4000000) != 0 && (unsigned int)KiGetCpuVendor() == 2 )
KiNxForceEnable = 1;
LOBYTE(result) = KiIsNXSupported();
if( (_BYTE)result )
{
result = __readmsr(0xC0000080) | 0x800;
__writemsr(0xC0000080, result);
LOBYTE(result) = 1;
KUSER_SHARED_DATA.ProcessorFeatures[12] = 1;
}
return result;
}Referenced by:
KiInitializeNXSupport