48 #define PTM_HOOK_TABLE_SIZE 1024 49 #define PTM_HOOK_ID(addr) (((addr) >> 12) & (PTM_HOOK_TABLE_SIZE - 1)) 50 #define PTM_PAE_ROOT_HOOK_ID(addr) (((addr) >> 5) & (PTM_HOOK_TABLE_SIZE - 1)) 73 _In_ void *ParentHook,
100 #endif // _HOOK_PTM_H_ PHOOK_GPA GpaHook
The GPA hook set on this page-table.
INTSTATUS IntHookPtmRemoveHook(HOOK_PTM **Hook, DWORD Flags)
Remove a page-table hook handle.
LIST_ENTRY RemovedPtmHooks
List of removed page-table hooks (HOOK_PTM_TABLE).
#define PTM_HOOK_TABLE_SIZE
struct _HOOK_PTM * PHOOK_PTM
struct _HOOK_PTM_TABLE * PHOOK_PTM_TABLE
int INTSTATUS
The status data type.
HOOK_HEADER Header
Hook header - used by all memory hooks.
struct _HOOK_PTM_STATE * PHOOK_PTM_STATE
QWORD Address
Guest physical address of the monitored page-table entry.
struct _HOOK_PTM_STATE HOOK_PTM_STATE
INTSTATUS IntHookPtmDeleteHook(HOOK_PTM **Hook, DWORD Flags)
Permanently delete a page-table hook handle.
INTSTATUS IntHookPtmInit(void)
Initialize the page-table hook system.
LIST_ENTRY * Entries
A list of hooked entries. When a HOOK_PTS_ENTRY is created for entry at offset X, Entries[x] will con...
struct _HOOK_PTM HOOK_PTM
INTSTATUS IntHookPtmCommitHooks(void)
Commit the page-table hooks.
DWORD DelCount
Number of delete requests. The entry will be deleted when this reaches 0.
INTSTATUS(* PFUNC_EptViolationCallback)(void *Context, void *Hook, QWORD Address, INTRO_ACTION *Action)
EPT callback handler.
LIST_ENTRY RemovedPtHooks
List of removed PTM hooks (HOOK_PTM).
DWORD RefCount
Number of references - number of HOOK_PTM structures that point to this entry.
QWORD Gpa
The page-table guest physical address.
LIST_ENTRY Link
List entry link.
INTSTATUS IntHookPtmSetHook(QWORD Address, PFUNC_EptViolationCallback Callback, void *Context, void *ParentHook, DWORD Flags, PHOOK_PTM *Hook)
Set a hook on a page-table.
HOOK_HEADER Header
Hook header - used by all memory hooks.
struct _HOOK_PTM_TABLE HOOK_PTM_TABLE
BOOLEAN HooksRemoved
True if hooks have been removed.
LIST_ENTRY Link
List entry link.