C ++内存地址和偏移写入/读取

时间:2015-07-24 07:03:54

标签: c++ memory offset

对不起,我的英文不好。 我想计算一个地址whit偏移量。

示例i有一个基地址:0x00D2038 whit offset 0x1c

我试过这个。

DWORD address = 0x004D2038;
DWORD offset = 0x1c;

DWORD base = (DWORD)(address + offset);
int old_value = 0;
int value = 3000;

//Obtain new addres form the address whit offset.
DWORD addr2 =  ReadProcessMemory(phandle,(void*)base,&old_value,sizeof(old_value),0);

//Write Memory
WriteProcessMemory(phandle,(void*)addr2,&value,(DWORD)sizeof(value),NULL);

但确实有效。 内存不会改变。谁是我的错误?

2 个答案:

答案 0 :(得分:3)

根据msdn,ReadProcessMemory返回一个BOOL,你将其用作WriteProcessMemory的addr2。如何改变记忆?

在ReadProcessMemory和WriteProcessMemory及其示例中建议从msdn搜索,并学习如何使用这两个函数。

答案 1 :(得分:1)

认为你有一个简单的错字 - 尝试;

//Write Memory
WriteProcessMemory(phandle,(void*)base,&value,(DWORD)sizeof(value),NULL);