SSDT HOOK(补充)

admin 2023年11月28日13:15:19评论10 views字数 758阅读2分31秒阅读模式

修改页的属性两种范式

  • 1、第一种办法,用我们学过的知识,通过页表基址直接修改

if(RCR4 & 0x00000020)
{//说明是2-9-9-12分页
KdPrint(("2-9-9-12分页 %pn",RCR4));
KdPrint(("PTE1 %pn",*(DWORD*)(0xC0000000 + ((HookFunAddr >> 9) & 0x007FFFF8))));
*(DWORD64*)(0xC0000000 + ((HookFunAddr >> 9) &) 0x007FFFF8) |= 0x02;
KdPrint(("PTE1 %pn",*(DWORD*)(0xC0000000 + ((HookFunAddr >> 9) & 0x007FFFF8))));
}
else
{//说明是10-10-12分页
KdPrint(("10-10-12分页n"));
KdPrint(("PTE1 %pn",*(DWORD*)(0xC0000000 + ((HookFunAddr >> 10) & 0x003FFFFC))));
*(DWORD*)(0xC0000000 + ((HookFunAddr >> 10) & 0x003FFFFC)) |= 0x02;
KdPrint(("PTE2 %pn",*(DWORD*)(0xC0000000 + ((HookFunAddr >> 10) & 0x003FFFFC))));
}
  • CR0寄存器的第16位叫做保护属性位,控制着页的读或写属性。

VOID PageProtectOn()
{
__asm{
mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}
}

VOID PageProtectOff()
{
__asm{
cli
mov eax,cr0
and eax,not 10000h
mov cr0,eax
}
}


原文始发于微信公众号(loochSec):SSDT HOOK(补充)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月28日13:15:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SSDT HOOK(补充)http://cn-sec.com/archives/2246683.html

发表评论

匿名网友 填写信息