VC++怎么读取内存基址加偏移???

DWORDbyread;LPCVOIDpbase=(LPCVOID)(基址);这里(基址+偏移)这样写,不对LPVOIDnbuffer=(LPVOID)&m_num4;:... DWORD byread;
LPCVOID pbase=(LPCVOID)(基址); 这里 (基址+偏移)这样写,不对
LPVOID nbuffer=(LPVOID)&m_num4;
::ReadProcessMemory(processH,pbase,nbuffer,4,&byread);
用ReadProcessMemory函数读取基址,但是偏移就读取不出来了,比如基址+80,就什么也不显示,求高手指教!!!
展开
 我来答
bhtzu
2014-05-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4228万
展开全部
你的第三第四参数,只给了4个字节大小(int?),怎么可能读取出+80来呢?
假如你需要读取100个int(DWORD)的数据,第三参数要给400字节以上的指针,第四参数要100*sizeof(DWORD),第五参数验证实际读取了多少。
你用调试显示一下第五参数byread的值,应该是4,也就是,你只取了4个字节,后面的没有取出,当然读不出来。
如果你说第二参数,建议你还是按照上面的办法,看看第五参数实际能读取多少,在实际能读取的范围内,偏移才有效。
更多追问追答
追问
应该怎么改呢?如果 那个基址我用CE偏移后的地址,就能读出了。
追答
就是用CE获取偏移后的地址。这个函数,不是随便哪个地址都可读的,看权限,还看系统内存的管理。

建议你,就是使用CE偏移后的地址,计算你需要的地址和这个地址的差值,将整个部分都读取到你的程序内指针中,再对自己的指针进行地址偏移计算,获取想要的内容。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式