-1

もっと C++ を学ぶために、何か楽しいことを選びました。それはランダムなアプリケーションのメモリへの書き込みです。私が書いたコードはすべてのアプリケーションで動作するようですが、Google Chrome タブで動作させるのに苦労しています。

私がやろうとしているのは、チート エンジンの助けを借りてメモリ アドレスを持っている Slope (y8.com) のスコアを変更することです。問題は、タブのプロセス ID を取得しているようです。Chrome のタスク マネージャーを使用して、タブのアドレスを 16 進数に変換し、チート エンジンでプロセスを開き、スコア アドレスを見つけました。

ここで問題が発生します。を使用するたびにGetWindowThreadProcessId(window, &processID); cout << processID、Chrome のタスク マネージャーでゲームのタブに表示される ID が出力されません。実際、chrome の ID を全体として出力します (chrome のタスク マネージャーでは「chrome」がその ID を持っているため、これはわかっています)。また、スコアを chrome の processID に書き込んだり、そこから読み取ったりすることはできません。この問題を無視するbufferと、常に 0 として出力されるようです。変更はありません。

私はこれに非常に慣れていないので、自分が何について話しているのかわからないと思っています。自分でゲームをテストする場合は、Chrome がその時点で使用しているアドレスを見つける必要があります。しかし、ここにコードがあります(何かを書く前に動作するように、コメントアウトしてWriteProcessMemory配置しました):Read

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

using namespace std;

int main() {
    int buffer = 0;

    LPVOID address = (LPVOID)0x15E7E1B0FB8/*(0x000000000192DFA0 + 0x0000291D8FE04000 + 0x18)*/;

    cout << "Begin playing the game and wait for the 0 score to appear" << endl;

    HWND window = FindWindow(NULL, "Slope Game - Play online at Y8.com");

    if (window) {
        cout << "Game found running! You ready to hax?" << endl;
        DWORD processID = 11180;
        GetWindowThreadProcessId(window, &processID);
        HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, false, processID);

        if (handle) {
            /*string hackedScoreInput = "0";
            cout << "Desired Score: " << flush;  getline(cin, hackedScoreInput);
            int hackedScore = stoi(hackedScoreInput);

            int suc = WriteProcessMemory(handle, address, &hackedScore, sizeof(hackedScore), NULL);
            if (suc > 0) {
                cout << "HAXED!" << endl;
                CloseHandle(handle);
            }
            else {
                cerr << GetLastError() << endl;
                cerr << hackedScore << " of size: " << sizeof(hackedScore) << endl;
                return 3;
            }*/

            while (true) {
                ReadProcessMemory(handle, address, &buffer, sizeof(buffer), NULL);
                cout << buffer << " at adress: " << processID << endl;
                Sleep(100);
                system("CLS");
            }
        }
        else {
            cerr << "Could not open the process" << endl;
            return 2;
        }
    }
    else {
        cerr << "Error! Could not find window!" << endl;
        Sleep(3000);
        return 1;
    }

    return 0;
}

コードの何が問題になっていますか?

4

1 に答える 1