如何获取内存区域的保护标志,标志是mprotect中的PROT_READ /PROT_EXEC

发布于 2024-11-28 04:06:04 字数 184 浏览 0 评论 0原文

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

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

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

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

I use mprotect() to set protection flags to a memory area.
Later on, I want to restore this memory area's protection flags.

My question is, how to get protection flags of a memory area?
the flags inclue PROT_READ ...

My workaround is to parse /proc/self/maps manually.
But this solution is to clumsy ...

I wonder if there's any system call that I can use.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰火雁神 2024-12-05 04:06:04

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

In general that's the only way. POSIX does not provide a way to access the protections. In application-specific usages where you have control over the code that maps the page, you could have it save the flags somewhere at that time, but in general you have to read /proc/self/maps. In addition, you may want to fallback to some default permissions if you can't read /proc. PROT_READ|PROT_WRITE is probably a reasonable default for most things but in some cases you may also want PROT_EXEC.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文