WriteProcessMemory () возвращает 487? Значение найдено с помощью CheatEngine

Как написано там (^), у меня проблема с C ++ и WriteProcessMemory (). Я открыл Windows-Calc.exe, запомнил номер и открыл CheatEngine. Я нашел номер (изменил его и т. Д.) И поместил его в эту программу:
(Примечание: я немец; «Рехнер» равен «Калькулятор»)

#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;
}

Окно найдено, процесс найден (ошибок нет ..) Но затем строка «// Здесь все начинается» возвращает 0 и устанавливает GetLastError () равным 487. Как и все следующие.
Если вы знаете, что я сделал неправильно, опишите, пожалуйста, дружелюбный подход, я начал C ++ вчера.

0

Решение

Видеть это ссылка на сайт для описания того, что означают коды GetLastError.

В этом случае ERROR_INVALID_ADDRESS, Попытка получить доступ к неверному адресу.

Это связано с тем, что вы пишете по «случайному» адресу памяти. Вы не можете просто взять число и надеяться, что в этом процессе будет память по этому адресу.

1

Другие решения


По вопросам рекламы [email protected]