MmChangeKernelCfgBitmap
CHAR __fastcall MmChangeKernelCfgBitmap(UINT64 a1){
INT64 v1;
MMPTE *PteAddress;
UINT64 v3;
char v4;
UINT64 ValidPte;
int v6;
_ETHREAD *CurrentThread;
bool v8;
PteAddress = MiGetPteAddress((PVOID)a1);
v3 = (UINT64)PteAddress;
if( v4 )
{
ValidPte = MiMakeValidPte((UINT64)PteAddress, v1, 536870913i64);
v3 = (UINT64)PteAddress;
}
else
{
ValidPte = ZeroPte;
}
v6 = 0;
LODWORD(CurrentThread) = MiPteInShadowRange(v3);
if( (_DWORD)CurrentThread )
{
LODWORD(CurrentThread) = MiPteHasShadow();
if( (_DWORD)CurrentThread )
{
v6 = 1;
if( HIBYTE(word_140C4DD48) )
goto LABEL_12;
v8 = (ValidPte & 1) == 0;
}
else
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
if( (*(_DWORD *)(*((_QWORD *)CurrentThread + 23) + 2172i64) & 0x1000) == 0 )
goto LABEL_12;
v8 = (ValidPte & 1) == 0;
}
if( !v8 )
{
LOBYTE(CurrentThread) = 0;
ValidPte |= 0x8000000000000000ui64;
}
}
LABEL_12:
*(_QWORD *)PteAddress = ValidPte;
if( v6 )
LOBYTE(CurrentThread) = MiWritePteShadow();
return(char)CurrentThread;
}Referenced by:
PsDispatchIumService