本质上,我正在寻找一个可以为内核模式做的功能,就像VirtualProtect
为用户模式做的一样。
我使用以下简化代码示例的逻辑分配内存。
PMDL mdl = MmAllocatePagesForMdl
(
LowAddress,
HighAddress,
SkipAddress,
size
);
ULONG flags = NormalPagePriority | MdlMappingNoExecute | MdlMappingNoWrite;
PVOID ptr = MmGetSystemAddressForMdlSafe
(
mdl,
flags
);
和标志仅对 Win8+ 有效
MdlMappingNoExecute
。此外,仅使用我不能为内存区域分配例如保护。MdlMappingNoWrite
MmGetSystemAddressForMdlSafe
NoAccess
我可以使用任何其他或替代的 API 来修改分配内存的页面保护吗?
黑客也可以这样做,因为目前此功能不会在生产代码中使用。