Assault Cube and Cube 2:Sauerbraten EntityList Reading

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Banlı Üye
Katılım
2 Ara 2020
Mesajlar
128
Çözümler
1
Tepki puanı
44
5 HİZMET YILI
UC'de paylaştım burdada paylaşıyorum konu bana ait.

Teşekkür vb mesajlar atmayın çünkü övgü sadece aptallar içindir.
Kodda anlamadığınız yeri sorabilirsiniz
mov eax,[eax+esi*4] -> Oyuncu sayısının i * 4 kadar düşünün
Kodlar bana ait. başka paylaşanda görmedim zaten.
Sınıflara ayırıp kodu daha güzel bir hale getirebilirsiniz ben uğraşmadım.

Assault Cube
C++:
#include <iostream>
#include <Windows.h>
#include <iomanip>

int main()
{
    DWORD pID;

    HWND hwnd = FindWindowA(NULL, "AssaultCube");
    GetWindowThreadProcessId(hwnd, &pID);
    HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);

    // 0x00400000 -> Game Module


    int players;
    ReadProcessMemory(handle, (LPVOID)(0x00400000 + 0x10F500), &players, sizeof(players), 0);
    DWORD entitylist;
    ReadProcessMemory(handle, (LPVOID)(0x00400000 + 0x10F4F8), &entitylist, sizeof(entitylist), 0);

    while (true)
    {
        for (int i = 0; i < players; i++)
        {
            DWORD ent;
            // mov eax,[eax+esi*4]
            ReadProcessMemory(handle, LPVOID(entitylist + (i * 4)), &ent, sizeof(ent), 0);

            if (!ent)
                continue;

            int health;
            char name[999];
            ReadProcessMemory(handle, (LPVOID)(ent + 0xF8), &health, sizeof(health), 0);
            ReadProcessMemory(handle, (LPVOID)(ent + 0x225), &name, sizeof(name), 0);
          
          
            std::cout << "Players :" << name << std::setw(20) << "Health :" << health << std::endl;


        }
        system("cls");
    }

}

Cube 2:Sauerbraten
Bunda GetModuleBaseAdress kullanma sebebim oyun GameModule değişiyor sürekli , Assault Cube sabit bir gameModule sahiptir.

C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <iomanip>

DWORD GetModuleBaseAddress(char* moduleName, DWORD ProcessID)
{
    DWORD baseAddress = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID);

    if (hSnapshot != INVALID_HANDLE_VALUE)
    {
        MODULEENTRY32 modEntry32 = { 0 };
        modEntry32.dwSize = sizeof(MODULEENTRY32);

        if (Module32First(hSnapshot, &modEntry32))
        {
            do
            {
                if (!strcmp(modEntry32.szModule, moduleName))
                {
                    baseAddress = (DWORD)modEntry32.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnapshot, &modEntry32));
        }
        CloseHandle(hSnapshot);
    }
    return baseAddress;
}

int main()
{

    DWORD pID;
    HWND hwnd = FindWindowA(NULL, "Cube 2: Sauerbraten");
    GetWindowThreadProcessId(hwnd, &pID);
    HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    DWORD gameModule = GetModuleBaseAddress((char*)"sauerbraten.exe", pID);
    // mov eax,[eax+esi*4]

    int players;
    ReadProcessMemory(handle, (LPVOID)(gameModule + 0x29CD3C), &players, sizeof(players), 0);
    DWORD entitylist;
    ReadProcessMemory(handle, (LPVOID)(gameModule + 0x29CD34), &entitylist, sizeof(entitylist), 0);
    while (true)
    {


        for (int i = 0; i < players; i++)
        {
            DWORD ent;
            ReadProcessMemory(handle, LPVOID(entitylist + (i * 4)), &ent, sizeof(ent), 0);

            if (!ent)
                continue;

            int health;
            char name[999];
            ReadProcessMemory(handle, LPVOID(ent + 0x15C), &health, sizeof(health), 0);
            ReadProcessMemory(handle, LPVOID(ent + 0x250), &name, sizeof(name), 0);

            std::cout << "Players :" << name << std::setw(20) << "Health :" << health << std::endl;

        }
        system("cls");
    }
}
 
ERROR PROBLEM FIXER
Support
Katılım
25 Eyl 2018
Mesajlar
5,366
Çözümler
1,450
Tepki puanı
2,351
Ödüller
20
Sosyal
7 HİZMET YILI
good working on website did u have ammo offsets
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst