首页 > 解决方案 > LPVOID 问题不会接受内存地址

问题描述

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

标签: c++

解决方案


改变

(LPVOID)00F7D9CC

static_cast<LPVOID>(0x00F7D9CC)

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


推荐阅读