Нужна помощь с external кодом

niklive

Активный Хакер
Сообщения
165
Реакции
13
Пытался сделать external чит, чтобы он работал через оффсеты, но я всё никак не пойму что с кодом не так. Мне не хватает знаний, чтобы понять что тут не так, поэтому я и пишу сюда. Если кто знает, подскажите почему код не работает. То есть всё компилится и консоль открывается, только ничего не происходит




C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <tchar.h>
#include <vector>
#include <stdlib.h>

using namespace std;

DWORD GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) {
    DWORD dwModuleBaseAddress = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);
    MODULEENTRY32 ModuleEntry32 = { 0 };
    ModuleEntry32.dwSize = sizeof(MODULEENTRY32);

    if (Module32First(hSnapshot, &ModuleEntry32))
    {
        do {
            if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0)
            {
                dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
                break;
            }
        } while (Module32Next(hSnapshot, &ModuleEntry32));


    }
    CloseHandle(hSnapshot);
    return dwModuleBaseAddress;
}

DWORD GetPointerAddress(HWND hwnd, DWORD gameBaseAddr, DWORD address, vector<DWORD> offsets)
{
    DWORD pID = NULL;
    GetWindowThreadProcessId(hwnd, &pID);
    HANDLE phandle = NULL;
    phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);

    DWORD offset_null = NULL;
    ReadProcessMemory(phandle, (LPVOID*)(gameBaseAddr + address), &offset_null, sizeof(offset_null), 0);
    DWORD pointeraddress = offset_null;
    for (int i = 0; i < offsets.size() - 1; i++)
    {
        ReadProcessMemory(phandle, (LPVOID*)(pointeraddress + offsets.at(i)), &pointeraddress, sizeof(pointeraddress), 0);
    }
    return pointeraddress += offsets.at(offsets.size() - 1);
}


int main()
{
    HWND hwnd_AC = FindWindowA(NULL, ("DEVOUR"));



    if (hwnd_AC != FALSE);
    DWORD pID = NULL;
    GetWindowThreadProcessId(hwnd_AC, &pID);
    HANDLE phandle = NULL;
    phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);



    char gamemodule1[] = "GameAssembly.dll";
    DWORD gamebaseaddress1 = GetModuleBaseAddress(_T(gamemodule1), pID);

    DWORD lightAddr = 0x02CE9CB0;

    
    vector<DWORD> lightOffsets{ 0x28, 0x30, 0x180, 0x78 };
    DWORD lightPtrAddr = GetPointerAddress(hwnd_AC, gamebaseaddress1, lightAddr, lightOffsets);

    while (true)
    {
        
        int light = 120470;
        WriteProcessMemory(phandle, (LPVOID*)(lightPtrAddr), &light, 4, 0);
        
    }

 

}
 

niklive

Активный Хакер
Сообщения
165
Реакции
13
Сделай дебаг на каждую функцию и поймешь что не так

Вот пример кода Чита на C#

Для просмотра скрытого содержимого вы должны авторизироваться или зарегистрироваться

Так в том то и дело, что всё отлично компилится. Я вот попробовал в совсем древней игре, там всё работает. Не понимаю почему к Devour это не подходит. Я видимо не ту игру выбрал, чтобы тренироваться. Если знаешь игру, на которой можно по тренить, напиши если не сложно
 

niklive

Активный Хакер
Сообщения
165
Реакции
13
Сделай дебаг на каждую функцию и поймешь что не так

Вот пример кода Чита на C#

Для просмотра скрытого содержимого вы должны авторизироваться или зарегистрироваться

Проблема была в оффсетах, только решить эту проблему никак не получается
 
Верх Низ