【问题标题】:Buffer contains executable data or not? C++ MSDN缓冲区是否包含可执行数据? C++ MSDN
【发布时间】:2020-03-10 21:10:38
【问题描述】:

我是 MSDN 开发 (C++) 的新手。我想知道是否有任何函数或 API 来检查内核中的缓冲区是否可执行。

【问题讨论】:

    标签: c++ kernel


    【解决方案1】:

    这取决于您使用的是哪种类型的内核。我认为 MSDN 是指 Windows;这里有一些来自 Windows 内部书籍的示例程序 https://github.com/zodiacon/WindowsInternals,可能会显示一些细节。

    通常,或者至少是 UNIX 派生系统,物理页面和它所属的对象 + 偏移量之间存在链接。在可执行或文本页面的情况下,它始终是文件缓存类型对象。通常,此对象具有一组映射,您的偏移量将属于其中的一些。每个映射都有关联的权限;因此,如果您找到与您的页面对应的具有可执行权限的映射,则它是可执行的。

    总结:

    (physical page) -> (object, offset)
    (object, offset) ->> (mapping)
    (mapping) -> (permission)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2021-09-14
      • 2021-08-25
      • 1970-01-01
      • 2013-04-01
      • 2018-09-14
      相关资源
      最近更新 更多