YJX_Driver_021_绕过驱动保护

Posted DebugSkill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YJX_Driver_021_绕过驱动保护相关的知识,希望对你有一定的参考价值。

1、

绕过SSDT驱动保护

  A、去掉页面保护

  B、写入In Line HOOK代码

  C、用OD附加测试效果

  D、反HOOK代码

【190】复制 第20课 的代码

【315】涉及到 页面的保护 ==> 涉及到 一个特殊的寄存器

  cr0,32位寄存器 ==> 其中的第17位(从第0位开始) ==> CW位

    【480】CW位: 置1 --> 开启 页面保护

            置0 --> 去掉 页面保护

【530】这只是一种方法(修改cr0的CW位),还有一种是修改内存描述符(MDL)(相关函数前面也说了,也可以更改页面保护的属性,那个更详细一些 更专业一点)

【580】用 CR0(CW位) 去掉页面保护,更方便一些

  【660】方法:

    (not (1 shl 16)) & cr0

【935】指令"cli" ==> 关掉相应的 中断,避免在执行我们的指令的时候被打扰

 

#pragma pack(1)
#pragma pack()
__asm // 去掉页面保护
{
  cli
  mov eax,cr0
  and eax,not 10000h //and eax,0FFFEFFFFh
  mov cr0,eax
}

__asm // 恢复页保护
{
  mov eax,cr0
  or eax,10000h //or eax,not 0FFFEFFFFh
  mov cr0,eax
  sti  // 【1145】恢复中断
}

【1160】加cli/sti指令 增加稳定性

 

2、

 

以上是关于YJX_Driver_021_绕过驱动保护的主要内容,如果未能解决你的问题,请参考以下文章

YJX_Driver_014_VM+Wlndbg调试驱动

YJX_Driver_024_驱动代码中C和C++代码区别

YJX_Driver_016_为DDK_HelloWorld添加默认派遣例程

YJX_Driver_009_DDK_HelloWorld_NT

2023驱动保护学习 -- 卸载驱动程序

YJX_Driver_019_读出原函数地址