Помогите пожалуйста исправить ошибки программы на языке C++
сейчас занимаюсь изучением программ для редактирования внутренней памяти процесса, использую Visual studio 2022. Что ожидается от программы: код найдёт значение адреса, после этого изменит. У меня возникло 2 проблемы:
- Как я могу автоматически определять адрес переменной, а не вводить его после каждой перезапуска процесса, то есть HPAddress. Мне известны офсеты адреса.
- Почему когда я вычитаю из переменной адреса 0, то есть HPValue-Dis
WriteProcessMemory(ProcessHandle, reinterpret_cast<void*>(HPAddress), &Offsets, HPValue-Dis, nullptr), то на выходе получается нечто невразумительное. Понимаю что проблема в типах переменных, но ошибку найти не могу. Вот сам код:
Код "pch.h"
#pragma once
#include <stdio.h>
#include <iostream>
#include <windows.h>
Основная программа:
#include "pch.h"
#include <iostream>
using namespace std;
int main() {
SetConsoleTitle(L"Test");
HWND Window = FindWindow(NULL, L"Tutorial-x86_64");
if (!Window) {
return 0;
}
else {
DWORD Pid;
GetWindowThreadProcessId(Window, &Pid);
HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);
if (!ProcessHandle) {
return 0;
}
else {
for (;;)
{
UINT_PTR HPAddress = 0xXXXXX; //некий адрес
float HPValue;
float Dis = 0;
UINT_PTR Offsets[] = { 0x08, 0x00000898, 0x325B10 };
if (GetAsyncKeyState(VK_F3)) {
ReadProcessMemory(ProcessHandle, reinterpret_cast<void*>(HPAddress), &HPValue, sizeof(HPValue), nullptr);
cout << HPValue;
WriteProcessMemory(ProcessHandle, reinterpret_cast<void*>(HPAddress), &Offsets, HPValue-Dis, nullptr);
break;
}
}
}
}
return 0;
}