我确实在论坛以及MSDN上浏览了一会儿,似乎无法找到我的问题所在。我相信这对于像我这样的非菜鸟来说很简单。我正在尝试编译一个简单的程序,它不喜欢我的代码。
#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
int score = 80000;
HWND hwnd = FindWindowA(NULL, "3D Pinball for Windows - Space Cadet");
if (hwnd == NULL)
{
cout << "Cant find window";
Sleep(3000);
}
else {
DWORD ProcID;
GetWindowThreadProcessId(hwnd, &ProcID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
cout << "Found it: "; cout << ProcID;
WriteProcessMemory(handle, (LPVOID)00F7D9CC, &score, sizeof(score), 0);
Sleep(5000);
}
return 0;
}
其中很多只是我的事,所以混乱的代码毫无意义。我正在尝试更改弹球游戏的比分,并且我从作弊引擎获得了内存地址,并且可以在其中更改地址值,并在玩游戏时观看它的更改。实际上,它只一次改变了游戏中的得分,再也没有改变过,我也不知道。但是我的主要目标是尝试使用自己的程序而不是作弊引擎来更改分数。我只想使用作弊引擎来查找地址。无论如何,地址是LPVOID之后的字符部分。 E2474,C3688,C2660是出现的错误。任何帮助将使我解脱都将不胜感激。
答案 0 :(得分:3)
更改
(LPVOID)00F7D9CC
收件人
static_cast<LPVOID>(0x00F7D9CC)
它应该可以解决您的编译问题。
答案 1 :(得分:1)
您尝试过吗:
WriteProcessMemory(handle, (LPVOID)0x00F7D9CC, &score, sizeof(score), 0);
以0开头的数字是八进制数字。 Base8只能包含数字0 ... 7,因此此令牌完全无效。