MiCheckKernelShadow
INT64 __fastcall MiCheckKernelShadow(CHAR a1, UINT64 a2, INT64 a3){
_MMPTE *PteBase;
UINT64 v5;
UINT64 v6;
INT64 v7;
__int64 v8;
UINT64 v9;
ULONG_PTR BugCheckParameter4;
UINT64 v13;
UINT64 v14;
PteBase = MmGetPteBase();
v5 = (UINT64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64);
v6 = (UINT64)PteBase + (((a2 + a3 - 1) >> 9) & 0x7FFFFFFFF8i64);
v7 = 0xFFFFFFFFi64;
v8 = 0i64;
while( v5 <= v6 )
{
v9 = MiReadWriteAnyLevelShadowPte(v5, 0i64, 0i64, ZeroPte);
v13 = v9;
BugCheckParameter4 = v9;
if( (v9 & 1) == 0 )
{
if( (a1 & 8) == 0 )
KeBugCheckEx(0x1Au, 0x3602ui64, v5, v9, v9);
return v8 + a2;
}
v14 = MiVaToPfn((PVOID)(v8 + a2));
MiPteInShadowRange((UINT64)&v13);
if( v14 != ((BugCheckParameter4 >> 12) & 0xFFFFFFFFFi64) )
{
if( (a1 & 8) == 0 )
KeBugCheckEx(0x1Au, 0x3603ui64, v5, BugCheckParameter4, BugCheckParameter4);
return v8 + a2;
}
v5 += 8i64;
v8 += 4096i64;
}
return v7;
}Referenced by:
MiCheckRelevantKernelShadows