c++ - WriteProcessMemory 不起作用

标签 c++ windows

我想用 int WriteProcessMemory 并再次执行此操作,使 int 成为负数。我知道如何在 VB.NET 中执行此操作;我试过同样的方法,但在 C++ 中,它不起作用。

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

最佳答案

您的"-"& &number 没有按照您认为的那样去做。在 C 中,& 二元运算符表示按位与,而不是字符串连接(C 没有 native 字符串类型)。因此,您的第二行采用指针值(number 的地址)并使用连字符的 ASCII 数值进行按位与运算(即,您采用地址 & 46),这会给你一个无意义的地址,而不是做你想做的。

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

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

关于c++ - WriteProcessMemory 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764281/

相关文章:

c++ - 如何访问整数的单个字节?

c++ - 为什么 C++11/Boost `unordered_map` 在删除时不重新散列?

Windows 性能分析器缺少 ImageId 事件

java - Java "cross-platform"的真正含义是什么?

windows - 如何在 gometalinter 中禁用 pkcs11?

linux - 如何实现最佳的 tcpip 套接字数据速率性能

c++ - EasyPHP MySQL 无法启动

c++ - 动态扩展 QTabBar

c++ - 如何知道嗅探的数据包是否直接从网站访问而不是链接?

windows - 在 Windows 上用 ruby​​ 编译 openssl