[byte] In base memory address 我需要使用哪种数据类型?

Which data type I need to use for [byte] In base memory address?

我正在开发一个程序 "hacks" GTA:圣安地列斯

我正在使用 WriteProcessMemory 函数将数据写入特定项目的基本内存,并 FindWindow 找到 GTA:圣安德烈亚斯 Window.

我的问题是第二个和第三个WriteProcessMemory不工作,它不影响游戏,什么都不做。

我看到了 here 我需要的基本内存地址和数据类型,你可以向下滚动到 Cheats 选项并查看基本内存和数据类型[byte] 他们需要。

示例:

#include <iostream>
#include <Windows.h>

using namespace std;

void GameHack(LPCSTR winname)
{
    int newValue = 125555;
    byte bytes = 1;
    HWND GameWindow = FindWindowA(NULL, winname);
    if (GameWindow == NULL) {
        auto errorcode = GetLastError();
        std::cout << "Failed to FindWindow & Error Code: " << errorcode;
        Sleep(3000);
        exit(1);
    }
    else {
        DWORD procID;
        GetWindowThreadProcessId(GameWindow, &procID);
        HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);

        if (handle == NULL) {    // compare handle to NULL, not procID to FALSE
            auto errorcode = GetLastError();  // 1st thing to do                 
            std::cout << "procID Failed & Error Code: " << errorcode;
            Sleep(3000);
            exit(1);
        }
        else {
            int option;
            cout << "\n 1. Money Booster!\n 2. Weapon Set 1\n 3. Max Muscle\n\n";
            cout << " Choose One Option You Want To Do: "; cin >> option;
            if (option == 1) {
                WriteProcessMemory(handle, (LPVOID)0x00C0F188, &newValue, sizeof(newValue), NULL);
            }
            if (option == 2) {
                WriteProcessMemory(handle, (LPVOID)0x969130, &bytes, sizeof(bytes), NULL);
            }
            if (option == 3) {
                WriteProcessMemory(handle, (LPVOID)0x969155, &bytes, sizeof(bytes), NULL);
            }
            CloseHandle(handle);
        }
    }
}

int main()
{
    GameHack("GTA: San Andreas");
    return 0;
}

我想为我的角色添加 武器组 1Max Muscle

为此我需要使用哪种数据类型和值?

您链接的网站列出了您需要用作字节的数据类型,您正在这样做。如果您的第一个 WriteProcessMemory 工作但第二个 2 不工作,则地址已更改。

您的第一个汇款地址列为 0x00C0F188,与网站上列出的地址不同,但它有效。

如果您不得不使用不同的地址来获取资金,那么您很可能会为所有变量使用不同的地址。

您需要先找到您的游戏版本并将其与该指南进行比较。无论哪种方式,最好的解决方案始终是自己反转地址,而不是依赖可能已过时的其他人的工作。