如题: 
已知内存首地址pBeginAddr如下: 
LPVOID pBeginAddr=lpSystemInfo.lpMinimumApplicationAddress;
现在需要取出以该地址为基地址,i为偏移地址的内存中的值,与一DWORD类型变量进行比较,应怎么办?
如下的代码应怎样改正?请大师指点LPVOID pBeginAddr=lpSystemInfo.lpMinimumApplicationAddress;
DWORD dVar;
for(int i=0;i<4096;i++)
{       if((DWORD)(((DWORD)pBeginAddr+i))==dVar)    { cout<<"找到变量"<<endl;
   }
}

解决方案 »

  1.   

    LPBYTE pBeginAddr = (LPBYTE)lpSystemInfo.lpMinimumApplicationAddress;
    if (*((DWORD*)(pGeginAddr + i)) == dVar)
    ...
      

  2.   

    LPVOID pBeginAddr=lpSystemInfo.lpMinimumApplicationAddress;
    DWORD dVar;
    for(int i=0;i<4096;i++)
    {     if((DWORD)(*((BYTE*)pBeginAddr+i))==dVar)   {cout<<"找到变量"<<endl;
       }
    }
      

  3.   

    我写过一个搜索内存的工具,据经验,代码应该修改如下
    LPVOID pBeginAddr=lpSystemInfo.lpMinimumApplicationAddress;
    DWORD dVar;
    for(int i=0;i<4093;i++) // 因为DWORD类型占4byte,而内存中页多数为4096byte对齐,
                            // 当i=4092时就已经访问完从pBeginAddr开始的4096字节了。
    {     if(*PDWORD(PBYTE(pBeginAddr) + i) == dVar)   {cout<<"找到变量"<<endl;
       }
    }