VOID HookPage(PUCHAR Page)
{
PHARDWARE_PTE_X86PAE PointerPte;
__try {
__asm {
mov eax, Page
mov eax, [eax]
}
PointerPte = (PHARDWARE_PTE_X86PAE)MiGetPteAddressPAE(Page);
if (PointerPte->Valid == 1) {
PointerPte->ExecuteDisable = 1;
DbgPrint("HookPage = %08X", Page);
}
}
__except(EXCEPTION_EXECUTE_HANDLER) {
DbgPrint("Exception captured while hooking page");
}
}
VOID UnhookPage(PUCHAR Page)
{
PHARDWARE_PTE_X86PAE PointerPte;
__try {
__asm {
mov eax, Page
mov eax, [eax]
}
PointerPte = (PHARDWARE_PTE_X86PAE)MiGetPteAddressPAE(Page);
if (PointerPte->Valid == 1) {
PointerPte->ExecuteDisable = 0;
}
}
__except(EXCEPTION_EXECUTE_HANDLER) {
DbgPrint("Exception captured while unhooking page");
}
}