MmIsSessionExecutionValid
INT64 __fastcall MmIsSessionExecutionValid(VOID *a1, INT64 a2, INT64 a3, INT64 a4, INT64 a5){
INT64 v7;
int SessionId;
INT64 v9;
__int64 v10;
RTL_BALANCED_NODE *v11;
UINT64 v12;
RTL_BALANCED_NODE *v13;
UINT8 OldIrql;
OldIrql = 0;
SessionId = MmGetSessionIdEx(a2);
if( SessionId == -1 )
return 0i64;
LODWORD(v10) = 1;
if( *((_BYTE *)a1 + 586) == 1 && SessionId != (unsigned int)MmGetSessionIdEx(*((_QWORD *)a1 + 68)) )
return 0i64;
if( (*((_DWORD *)a1 + 29) & 0x800) != 0 || *((_QWORD *)a1 + 5) != *((_QWORD *)KeGetPcr() + 53) )
return 0i64;
if( a3 )
{
MmLockLoadedModuleListShared(&OldIrql, v7, v9);
v11 = MiSessionLookupImage(a3);
LOBYTE(v12) = OldIrql;
v13 = v11;
MmUnlockLoadedModuleListShared(v12);
return v13 != 0i64;
}
return(unsigned int)v10;
}Referenced by:
RtlpWalkFrameChain