gpt4 book ai didi

c - 为整个地址空间设置保护位

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:30 24 4
gpt4 key购买 nike

好的,我想在这里做的是在 Linux 中只授予对地址空间中所有页面的读取权限。每当要写入一个页面时,我都会在 SIGSEGV 信号处理程序中授予对它的写入权限。对于 32 位,这很容易,因为地址空间只有 4GB,因此为每个页面设置位不会花费很多时间,但是对于 64 位进程,我该如何解决这个问题,因为地址空间几乎是在这种情况下是无限的。

如果我用 ulimit -v 限制地址空间大小对我来说没问题,但人们告诉我地址​​不是线性的。现在我的头很痛,想我该如何解决这个问题。在这方面的任何帮助将不胜感激。请告诉我为 64 位程序设置所有页面的读取访问权限的最有效方法。

最佳答案

为避免保护整个地址空间,只保护正在使用的页面。并且,捕获更改地址空间的系统调用(mmap、brk、可能的线程创建等),以便您可以保护这些页面。

请注意,如果无法写入其堆栈(也无法执行其代码),您的信号处理程序将无法运行,因此除了 64 位大之外还有一些基本问题。

关于c - 为整个地址空间设置保护位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7539966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com