禁用 ASLR 且基址设置为高地址的 VirtualAlloc 0x20000 [已关闭]

VirtualAlloc to 0x20000 with ASLR disabled and Base Address set to a High Address [closed]

提问人:theShingles 提问时间:11/8/2023 更新时间:11/8/2023 访问量:70

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

9天前关闭。

在我的C++程序中,我尝试分配一个特定的虚拟内存地址范围,0x20000 64KB,但发现有时 VirtualAlloc() 操作会失败,因为该范围已经在使用中。因此,我禁用了ASLR(/DynamicBase:No)并将基址设置为0x800000;现在它一直无法分配。VMMap 显示一堆已保留在我的基址下方的可共享内存,从 0x10000 到 0x40000。

对 VirtualAlloc 的调用示例:

void* addr = VirtualAlloc((LPVOID)0x20000, 0x10000, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

有没有办法保证 VirtualAlloc() 到这个特定的内存范围会通过(即,防止任何其他东西分配这个内存范围)?

C++ WinAPI 虚拟内存 ASLR

评论

2赞 273K 11/8/2023
当然没有,手册非常清晰完整,没有什么可补充的。
0赞 theShingles 11/9/2023
重新表述我的查询使我想到了我目前正在调查的这个问题:stackoverflow.com/questions/35785677/......

答: 暂无答案