这里的Patch指对Windows内核核心组件添加一些不支持的功能,但是微软声明这会减少系统稳定性和可靠性、性能。在x86版本的系统上可能实现,但是在x64版本的Windows上引入了PatchGuard。
但是PatchGuard不是一个完美的保护方案,会给反病毒厂商添加额外的问题,因为恶意软件可以很容易绕过厂商检测。但是依然可以阻止合法软件Patch造成的系统稳定性、可靠性和性能问题。
Windows Kernel和设备驱动是同一特权级别,但是设备驱动是不应该修改内核系统结构的。但是x86没有强制保护,导致很多反病毒恶意软件和安全软件通过加载驱动修改内核结构
x64Windows开始强制限制设备驱动可以修改的东西,KPP就是这种技术。定期检查受保护的系统结构没有被更改,如果检测到了,就蓝屏并关机或重启,对应码位0x109,CRITICAL_STRUCTURE_CORRUPTION。可能的修改是
KPP仅防御设备驱动修改内核,但是无法阻止一个驱动修改另一个驱动
由于设备驱动和内核在同一个特权级别,所以不可能完全阻止驱动绕过KPP。KPP通过定期更新来对抗绕过策略。
由于招致了反病毒软件的一些批评,微软开始开放一些接口用于反病毒软件。
[2]介绍了一种64位下回调函数的实现监控方案,利用PsSetCreateProcessNotifyRoutineEx
监控
[3]介绍了各个版本的绕过方案
[1] https://en.wikipedia.org/wiki/Kernel_Patch_Protection