MmRemoveExecuteGrants
VOID __stdcall MmRemoveExecuteGrants(){
_EPROCESS *Process;
char v1;
UINT64 v2;
INT64 v3[22];
_MI_TB_FLUSH_LIST TbFlushList[48];
memset(TbFlushList, 0i64, 0xB8u);
memset(v3, 0i64, sizeof(v3));
Process = KeGetCurrentThread()->ApcState.Process;
LOWORD(v3[0]) = -32762;
Process = (_EPROCESS *)((char *)Process + 1664);
v3[3] = (INT64)Process;
v3[21] = (INT64)TbFlushList;
TbFlushList[0] = 1;
v3[19] = (INT64)MiRevokeExecutePte;
v3[20] = (INT64)HalSystemVectorDispatchEntry;
v3[5] = 0xFFFF7FFFFFFFFFFFui64;
LOWORD(TbFlushList[1]) = 0;
*(_QWORD *)&TbFlushList[4] = 0i64;
*(_QWORD *)&TbFlushList[6] = 0i64;
TbFlushList[2] = 20;
MiLockWorkingSetShared();
BYTE6(v3[0]) = v1;
MiWalkPageTables((INT64)v3);
LOBYTE(v2) = BYTE6(v3[0]);
MiUnlockWorkingSetShared((_MMSUPPORT_INSTANCE *)Process, v2);
MiFlushTbList(TbFlushList);
}Referenced by:
NtSetInformationProcess