【问题标题】:how to get protection flags of a memory area, flags are PROT_READ /PROT_EXEC in mprotect如何获取内存区域的保护标志,标志是mprotect中的PROT_READ /PROT_EXEC
【发布时间】:2011-10-21 02:09:13
【问题描述】:

我使用 mprotect() 将保护标志设置到内存区域。 稍后,我想恢复这个内存区域的保护标志。

我的问题是,如何获取内存区域的保护标志? 标志包括 PROT_READ ...

我的解决方法是手动解析 /proc/self/maps。 但是这个解决方案很笨拙...

我想知道是否有任何我可以使用的系统调用。

【问题讨论】:

    标签: c++ c system-calls mprotect


    【解决方案1】:

    一般来说这是唯一的方法。 POSIX 不提供访问保护的方法。在您可以控制映射页面的代码的特定应用程序的使用中,您可以让它在那时将标志保存在某个地方,但通常您必须阅读/proc/self/maps。此外,如果您无法读取/proc,您可能希望回退到一些默认权限。 PROT_READ|PROT_WRITE 可能是大多数事情的合理默认值,但在某些情况下,您可能还需要 PROT_EXEC

    【讨论】:

      猜你喜欢
      • 2014-07-17
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2013-11-10
      • 2013-09-20
      • 2021-03-09
      相关资源
      最近更新 更多