gpt4 book ai didi

c++ - 如何更改已映射和已提交内存空间的权限?

转载 作者:行者123 更新时间:2023-12-02 10:39:11 24 4
gpt4 key购买 nike

我曾尝试在任何过程中将数据读写到内存空间。
我使用了VirtualProtect()VirtualProtectEx()函数来更改存储区的权限。

if(!VirtualProtect(dwAddr, dwSize, PAGE_EXECUTE_READWRITE, &dwOldProtect))
{
printf("VirtualProtect failed error %d", GetLastError());
}

CopyMemory(dwAddr, pBuffer, dwSize);

但是我有错误5(访问被拒绝)代码,而不是好的结果。

所以我通过使用 VirtualQuery()函数检查了内存信息。
MEMORY_BASIC_INFORMATION info;

VirtualQuery(dwAddr, &info, sizeof(info));

结果如下:
info.Type = MEM_MAPPED;
info.State = MEM_COMMITED;
info.AllocationProtect = PAGE_WRITECOPY;
info.Protect = PAGE_READ;

因此,我无法更改已映射和已提交内存的权限。

如果还有其他方法,请告诉我。

最佳答案

如果是外部过程,则必须以管理员身份运行应用程序,并且必须使用VirtualQueryEx()。

您的问题似乎是您没有以管理员身份运行。如果您以管理员身份运行并使用VirtualQueryEx()仍然失败,则需要检查OpenProcess()返回的句柄并确保其良好。

检查返回值,并在调用API后使用GetLastError()进一步诊断问题。

关于c++ - 如何更改已映射和已提交内存空间的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426186/

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