【问题标题】:MmAllocateContiguousMemory default permissionsMmAllocateContiguousMemory 默认权限
【发布时间】:2012-02-24 12:48:29
【问题描述】:

有谁知道这个例程返回的页面上的默认权限是什么。是否有机会在此页面上放置一些代码部分。

谢谢

【问题讨论】:

    标签: windows winapi kernel device-driver


    【解决方案1】:

    通过MDL分配内存,然后调用MmProtectMdlSystemAddress()更改页面保护。

    找到here

    【讨论】:

    • Alex:你知道是否有一个例程来检查从非分页池分配的页面的权限。
    【解决方案2】:

    简短的回答是否定的 - 没有安全的、记录在案的从内核模式操作页面保护位的方法。这些位归内存管理器所有。

    也就是说,由于以这种方式分配的内存没有设置 NX 位,因此没有什么可以阻止您从通过此 API 分配的内存中执行代码。

    编辑:我的立场是正确的 - 我不知道上面 Alex 的回答中提到的 API。你每天都能学到新东西!

    【讨论】:

    • 我错误地使用了通过 MmAllocateContiguousMemory 分配的页面之一作为代码页。当我没有看到 BSOD 时,我很惊讶。奇怪的是,windows 可以分配具有执行权限的固定内存。 @Alex:感谢 MDL。但是,我想知道为什么 windows 允许从分配的页面执行。是不是因为页表中预先分配了页,没有设置NX位。
    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 2019-10-25
    • 2021-12-19
    • 2018-06-17
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多