Помогите пожалуйста исправить ошибки программы на языке C++

сейчас занимаюсь изучением программ для редактирования внутренней памяти процесса, использую Visual studio 2022. Что ожидается от программы: код найдёт значение адреса, после этого изменит. У меня возникло 2 проблемы:

  1. Как я могу автоматически определять адрес переменной, а не вводить его после каждой перезапуска процесса, то есть HPAddress. Мне известны офсеты адреса.
  2. Почему когда я вычитаю из переменной адреса 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;
}

Ответы (0 шт):