写入进程内存不起作用

WriteProcessMemory won't work

本文关键字:不起作用 内存 进程      更新时间:2023-10-16

我想用一个int来WriteProcessMemory,然后再做一次,使int为负数。我知道如何在VB.NET中做到这一点;我尝试了同样的方法,但在C++中,它不起作用。

 WriteProcessMemory(hProcess, (void*)(MYBASE + 0x6F4), &number, 4, NULL);
 WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), "-" & &number, 4, NULL);

您的"-" & &number不是在做您认为的事情。在C中,&二进制运算符的意思是按位AND,而不是字符串串联(C没有本机字符串类型)。因此,第二行取指针值(number的地址),并与连字符的ASCII数值进行逐位and运算(即,取地址& 46),这将给你一个无意义的地址,而不是你想要的。

WriteProcessMemory的第三个参数是一个地址,因此需要一个变量来获取的地址。将第二行替换为以下两行:

int negativeNumber = -number;
WriteProcessMemory(hProcess, (void*)(MYBASE + 0xA54), &negativeNumber, 4, NULL);