LPVOID 问题不接受内存地址

LPVOID issue wont accept memory address

本文关键字:地址 内存 不接受 问题 LPVOID      更新时间:2023-10-16

我确实在论坛和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是出现的错误。任何帮助将不胜感激,让我解开困境。

更改

(LPVOID)00F7D9CC

static_cast<LPVOID>(0x00F7D9CC)

它应该解决您的编译问题。

你试过吗:

WriteProcessMemory(handle, (LPVOID)0x00F7D9CC, &score, sizeof(score), 0);

以 0 开头的数字是八进制数字。Base8 只能包含数字 0...7,因此此令牌根本无效。