21 #define SELF_MAP_ENTRY(Cr3) (CLEAN_PHYS_ADDRESS64(((QWORD)(Cr3))) + gGuest.Mm.SelfMapIndex * 8ull) 34 #define SELF_MAP_ENTRY_IS_DETECTION(entry) (((entry) & PT_P) != 0 && ((entry) & PT_US) != 0) 39 #define SELF_MAP_ENTRY_VA (0xFFFF800000000000 | ((QWORD)gGuest.Mm.SelfMapIndex << 39) | \ 40 ((QWORD)gGuest.Mm.SelfMapIndex << 30) | ((QWORD)gGuest.Mm.SelfMapIndex << 21) | \ 41 ((QWORD)gGuest.Mm.SelfMapIndex << 12) | ((QWORD)gGuest.Mm.SelfMapIndex * 8)) int INTSTATUS
The status data type.
INTSTATUS IntWinSelfMapGetAndCheckSelfMapEntry(WIN_PROCESS_OBJECT *Process)
Sets and validates the self map entry values for a process.
INTSTATUS IntWinSelfMapProtectSelfMapIndex(WIN_PROCESS_OBJECT *Process)
Protects the self map index of a process by placing an EPT write hook on it.
INTSTATUS IntWinSelfMapUnprotectSelfMapIndex(WIN_PROCESS_OBJECT *Process)
Removes the EPT protection for the self map entry index of a process.
struct _WIN_PROCESS_OBJECT * PWIN_PROCESS_OBJECT
INTSTATUS IntWinSelfMapValidateSelfMapEntries(void)
Validates the self map entries for every process in the system.
INTSTATUS IntWinSelfMapEnableSelfMapEntryProtection(void)
Enables the self map protection mechanism for the entire system.
INTSTATUS IntWinSelfMapDisableSelfMapEntryProtection(void)
Disables the self map entry protection for all the processes on the system.
This structure describes a running process inside the guest.