gpt4 book ai didi

c - 保护 VirtualAlloc 分配的内存中的各个页面

转载 作者:行者123 更新时间:2023-11-30 15:59:29 26 4
gpt4 key购买 nike

假设我使用 VirtualAlloc()0x060000000x06010000 分配了几页连续内存(即 16 个 4KB 页),其中 PAGE_READWRITE保护。但过了一段时间,我想使该内存区域中的单个页面可执行。在阅读了 VirtualProtect() 的 msdn 文档后,我很困惑这是否可能。在Linux中,它与mprotect一起使用。

我正在尝试做的事情的视觉示例:

     +-------------------------------------------------------+
| Commited memory with a single VirtualAlloc call (RW-) |
+-------------------------------------------------------+
↑ ↑
0x06000000 0x06010000

我想将保护更改为此(不按比例):

     +------------------+-----------+------------------------+
| (RW-) | (RWX) | (RW-) |
+------------------+-----------+------------------------+
↑ ↑ ↑ ↑
0x06000000 0x06003000 0x06004000 0x06010000

我可以通过这样的 VirtualProtect() 调用来执行此操作吗?

VirtualProtect(0x06003000, 0x1000, PAGE_EXECUTE_READWRITE, &oldProtection);

我目前无法访问 Windows 系统来测试此问题,这就是我这么问的原因

最佳答案

VirtualProtect(0x06003000, 0x1000, PAGE_EXECUTE_READWRITE, &oldProtection); 对于从 0x06003000 开始的已分配/提交的 0x1000 字节内存块是正确的。

关于c - 保护 VirtualAlloc 分配的内存中的各个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8889962/

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