【发布时间】:2020-03-10 21:10:38
【问题描述】:
我是 MSDN 开发 (C++) 的新手。我想知道是否有任何函数或 API 来检查内核中的缓冲区是否可执行。
【问题讨论】:
我是 MSDN 开发 (C++) 的新手。我想知道是否有任何函数或 API 来检查内核中的缓冲区是否可执行。
【问题讨论】:
这取决于您使用的是哪种类型的内核。我认为 MSDN 是指 Windows;这里有一些来自 Windows 内部书籍的示例程序 https://github.com/zodiacon/WindowsInternals,可能会显示一些细节。
通常,或者至少是 UNIX 派生系统,物理页面和它所属的对象 + 偏移量之间存在链接。在可执行或文本页面的情况下,它始终是文件缓存类型对象。通常,此对象具有一组映射,您的偏移量将属于其中的一些。每个映射都有关联的权限;因此,如果您找到与您的页面对应的具有可执行权限的映射,则它是可执行的。
总结:
(physical page) -> (object, offset)
(object, offset) ->> (mapping)
(mapping) -> (permission)
【讨论】: