WriteProcessMemory() 返回 487?使用 CheatEngine 找到的价值

WriteProcessMemory() returns 487? Value found using CheatEngine

本文关键字:CheatEngine 使用 返回 WriteProcessMemory      更新时间:2023-10-16

正如上面写的(^),我在C++和WriteProcessMemory()方面遇到了问题。我打开了Windows-Calc.exe,存储了一个数字并打开了CheatEngine。我找到了这个数字(更改了它 e.t.c.)并将其放入此程序中:(注意:我是德国人;"Rechner"等于"计算器")

#include <iostream>
#include <Windows.h>
using namespace std;
int main (){
    int Value = 500;
    HWND hWnd = FindWindow(0, L"Rechner");
    if (!hWnd) {
        cerr << "Can't find window" << endl;
        return 0;
        }
    DWORD PID;
    GetWindowThreadProcessId(hWnd, &PID);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
    if (!hProcess) {
        cerr << "Process handle error" << endl;
        return 0;
        }
    int iSuccess = WriteProcessMemory(hProcess, (LPVOID)0x899FC6F60C , &Value, (DWORD)sizeof(Value), NULL);
    int i = 0;
    while (iSuccess == 0){
        i = i+1;
        cerr << "Failed " << i  << "  Error:   " << GetLastError() << endl;
        iSuccess = WriteProcessMemory(hProcess, (LPVOID)0x899FC6F60C , &Value, (DWORD)sizeof(Value), NULL);  //Here all begins
        }
    clog << "Done" << endl;
    CloseHandle(hProcess);
    return 0;
}

找到窗口,找到进程(那里没有错误。但是,"//Here All begins"行返回 0,并将 GetLastError() 设置为 487。像以下所有内容一样。如果你知道,我做错了什么,请描述一下菜鸟友好,我昨天开始C++。

有关 GetLastError 代码含义的说明,请参阅此链接。

在本例中ERROR_INVALID_ADDRESS,尝试访问无效地址。

这是因为您正在写入"随机"内存地址。你不能只取一个数字,并希望在这个地址的另一个进程中会有内存。