【发布时间】:2012-12-17 08:18:29
【问题描述】:
我已将我的 DLL 注入到进程中,我尝试扫描内存以查找与我的值相同的地址,但在我获得第一个地址后导致崩溃,它应该是 10 个地址
for(DWORD i = MEM_START; i< MEM_END ;i++)
{
VirtualQuery((void*)i,pMemInfo,sizeof(MEMORY_BASIC_INFORMATION));
if(pMemInfo->AllocationProtect == PAGE_READONLY || PAGE_EXECUTE_WRITECOPY || PAGE_READWRITE || PAGE_WRITECOMBINE)
{
if(*(DWORD*)i==1337)
{
addresses.push_back(i);
}
}
}
我认为我的保护检查是错误的,但不太确定。
【问题讨论】:
-
您能解释一下您正在尝试解决的问题,您认为扫描内存会有所帮助吗?作为一种工程技术,内存扫描本质上是不可靠的,访问保护页面可能会使应用程序崩溃。
-
嗯,应用程序有多个管理器,它们的值都为 0810312,并且指针总是在变化,所以我不能使用它们来获取正确的地址,是的,这些是唯一具有 0810312 作为其 int 值的地址
标签: c++ memory allocation wow64 virtualquery