C++ 基本内存地址中的[byte]需要使用哪种数据类型?

C++ 基本内存地址中的[byte]需要使用哪种数据类型?,c++,window,C++,Window,我正在开发一个“黑客”程序,该程序可以“破解”GTA:San Andreas 我正在使用WriteProcessMemory函数将数据写入特定项的基本内存,并使用FindWindow查找GTA:sanandreas窗口 我的问题是,第二个和第三个WriteProcessMemory不工作,它不影响游戏,也不做任何事情 我看到了我需要的基本内存地址和数据类型,您可以向下滚动到作弊选项,查看它们需要的基本内存和数据类型[byte] 示例: #include <iostream> #inc

我正在开发一个“黑客”程序,该程序可以“破解”GTA:San Andreas

我正在使用
WriteProcessMemory
函数将数据写入特定项的基本内存,并使用
FindWindow
查找GTA:sanandreas窗口

我的问题是,第二个和第三个
WriteProcessMemory
不工作,它不影响游戏,也不做任何事情

我看到了我需要的基本内存地址和数据类型,您可以向下滚动到作弊选项,查看它们需要的基本内存和数据类型[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;
}
#包括
#包括
使用名称空间std;
void GameHack(LPCSTR winname)
{
int newValue=125555;
字节=1;
HWND GameWindow=FindWindowA(NULL,winname);
如果(GameWindow==NULL){
自动错误代码=GetLastError();

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

您的第一个货币地址被列为0x00C0F188,它与网站上列出的地址不同,可以正常工作

如果您必须为钱使用不同的地址,那么很可能所有变量都有不同的地址


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

注意:以下内存地址都不适用于GTA:San Andreas v2.0或3.0(steam)。v2.0及更高版本中的所有地址都已更改或移动。因此无法访问。这是否适用于您的GTA版本?字节最好用
std::byte
类型表示,但通常您会看到使用
char
。两者都可以使用。@ChrisMM-Hey,[dword]金钱对我来说很有用。我如何检查我的GTA:San Andreas版本?@Frank我曾尝试使用
std::byte
并将值设置为1,但仍然无效。有人可以帮助我吗?