#include #include #include

#ifdef _WIN32 #include <windows.h> #else #include <unistd.h> #endif

void displayProcessID() { // 获取当前进程的 PID #ifdef _WIN32 DWORD pid = GetCurrentProcessId(); #else pid_t pid = getpid(); #endif

std::cout << '进程ID: ' << pid << std::endl;

}

std::string getMemoryAddress(void* pointer) { std::stringstream ss; ss << std::hex << std::setw(sizeof(void*) * 2) << std::setfill('0') << reinterpret_cast<uintptr_t>(pointer); return ss.str(); }

int main() { displayProcessID();

// 初始化变量
int score = 0;
bool gameOver = false;

// 显示变量的实时内存地址(以十六进制格式)
std::cout << '分数的内存地址: 0x' << getMemoryAddress(&score) << std::endl;
std::cout << '游戏结束标志的内存地址: 0x' << getMemoryAddress(&gameOver) << std::endl;

while (!gameOver) {
    // 显示当前分数和选项
    std::cout << '当前分数: ' << score << std::endl;
    std::cout << '1. 增加分数' << std::endl;
    std::cout << '2. 游戏结束' << std::endl;

    // 等待用户输入选项
    int choice;
    std::cin >> choice;

    // 根据用户的选择执行相应操作
    switch (choice) {
    case 1:
        // 增加分数
        score += 10;
        break;
    case 2:
        // 结束游戏
        gameOver = true;
        break;
    default:
        std::cout << '无效的选项!' << std::endl;
        break;
    }
}

std::cout << '游戏结束!最终分数: ' << score << std::endl;

return 0;

}

// 游戏数据修改器程序 #include #include <Windows.h> #include <TlHelp32.h>

DWORD findProcessId(const char* processName) { HANDLE hProcessSnap; PROCESSENTRY32 pe32; DWORD dwPriorityClass;

// 获取进程快照
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
    return 0;
}

// 设置结构体大小
pe32.dwSize = sizeof(PROCESSENTRY32);

// 获取第一个进程的信息
if (!Process32First(hProcessSnap, &pe32)) {
    CloseHandle(hProcessSnap);
    return 0;
}

// 遍历进程列表,查找目标进程
do {
    if (strcmp(pe32.szExeFile, processName) == 0) {
        // 找到目标进程
        CloseHandle(hProcessSnap);
        return pe32.th32ProcessID;
    }
} while (Process32Next(hProcessSnap, &pe32));

// 没有找到目标进程
CloseHandle(hProcessSnap);
return 0;

}

void modifyScore(DWORD processId, int score) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId); if (hProcess == NULL) { std::cout << '无法打开进程' << std::endl; return; }

// 写入新的分数值
int newScore = score;
WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(0x地址), &newScore, sizeof(int), NULL);

CloseHandle(hProcess);

}

int main() { const char* gameProcessName = '游戏进程名.exe'; // 修改为游戏进程的名称 const int newScore = 100; // 修改为要设置的新分数值

DWORD processId = findProcessId(gameProcessName);
if (processId == 0) {
    std::cout << '找不到游戏进程' << std::endl;
    return 0;
}

modifyScore(processId, newScore);
std::cout << '修改分数成功!' << std::endl;

return 0;

}

C++ 游戏数据修改器实战:修改游戏分数

原文地址: https://www.cveoy.top/t/topic/quMe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录