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

niklive

Активный
Сообщения
165
Реакции
16
Пытался сделать 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
Реакции
16
Сделай дебаг на каждую функцию и поймешь что не так

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

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

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

niklive

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

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

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

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