Как делаются читы на UE

На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,004
Реакции[?]
180
Поинты[?]
67K
Есть гайдик какой нибудь, как читы пишутся на Unreal Engine 4 ? Нужно SDK делать или мне не обязательно что бы вывести значение хп , делать сдк.
 
Пользователь
Статус
Оффлайн
Регистрация
17 Июл 2021
Сообщения
463
Реакции[?]
118
Поинты[?]
10K
можно и без сдк, но будет вери неудобно каждый раз обновлять оффсеты
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,004
Реакции[?]
180
Поинты[?]
67K
можно и без сдк, но будет вери неудобно каждый раз обновлять оффсеты
The Isle например, не обновляется совсем, но в неё играют, просто обновляется бета The Isle Evrima, так что мне насрать на неудобность обновления оффсетов на данный момент, спросил на юц на счет того почему игра не видит моего локального игрока, сказали что LocalPlayer это оффсет Game Instance, а не базового адреса, к которому я его добавлял.


Например вот я делал


Код:
auto base = (uintptr_t)GetModuleHandle(nullptr);
 
std::uintptr_t* playerAddress = reinterpret_cast<std::uintptr_t*>(base + OFFSET_LocalPlayer);
    
 int* myPlayersHealth = reinterpret_cast<int*>(*playerAddress + OFFSET_Health);
 
    std::cout << "Base is: 0x" << base << std::endl;
    std::cout << "LocalPlayer is: 0x" << *playerAddress << std::endl;
    std::cout << "Health is: " << *myPlayersHealth << std::endl;
    system("cls");
 
Начинающий
Статус
Оффлайн
Регистрация
19 Апр 2022
Сообщения
6
Реакции[?]
0
Поинты[?]
0
The Isle например, не обновляется совсем, но в неё играют, просто обновляется бета The Isle Evrima, так что мне насрать на неудобность обновления оффсетов на данный момент, спросил на юц на счет того почему игра не видит моего локального игрока, сказали что LocalPlayer это оффсет Game Instance, а не базового адреса, к которому я его добавлял.


Например вот я делал


Код:
auto base = (uintptr_t)GetModuleHandle(nullptr);

std::uintptr_t* playerAddress = reinterpret_cast<std::uintptr_t*>(base + OFFSET_LocalPlayer);
   
int* myPlayersHealth = reinterpret_cast<int*>(*playerAddress + OFFSET_Health);

    std::cout << "Base is: 0x" << base << std::endl;
    std::cout << "LocalPlayer is: 0x" << *playerAddress << std::endl;
    std::cout << "Health is: " << *myPlayersHealth << std::endl;
    system("cls");
auto localplayer = UWorld->gameinstance->localplayer[0]
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,004
Реакции[?]
180
Поинты[?]
67K
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,004
Реакции[?]
180
Поинты[?]
67K
так причем здесь сдк? он тебе дал наследование как добраться до локал плеера
Хз почему мне выводит 2414 просто.
Я посмотрел по классам и увидел что значение Health находится в классе AIBaseCharacter
Как добраться до него ?

C++:
auto base = (uintptr_t)GetModuleHandle("TheIsleClient-Win64-Shipping.exe");
    DWORD64* GWorlds = reinterpret_cast<DWORD64*>(base + GWorld);
    //float* myPlayersGrowth = reinterpret_cast<float*>(*playerAddress + OFFSET_CurrentGrowthPercent);
    DWORD64* GameInstance1 = reinterpret_cast<DWORD64*>(*GWorlds + OwningGameInstance);
    DWORD64* LocalPlayers = reinterpret_cast<DWORD64*>(*GameInstance1 + OFFSET_LocalPlayer);
    DWORD64* LocalPlayer = reinterpret_cast<DWORD64*>(*LocalPlayers);
    int32_t myPlayersHealth = *reinterpret_cast<int*>(*LocalPlayer + OFFSET_Health);
 
Начинающий
Статус
Оффлайн
Регистрация
19 Апр 2022
Сообщения
6
Реакции[?]
0
Поинты[?]
0
Хз почему мне выводит 2414 просто.
Я посмотрел по классам и увидел что значение Health находится в классе AIBaseCharacter
Как добраться до него ?

C++:
auto base = (uintptr_t)GetModuleHandle("TheIsleClient-Win64-Shipping.exe");
    DWORD64* GWorlds = reinterpret_cast<DWORD64*>(base + GWorld);
    //float* myPlayersGrowth = reinterpret_cast<float*>(*playerAddress + OFFSET_CurrentGrowthPercent);
    DWORD64* GameInstance1 = reinterpret_cast<DWORD64*>(*GWorlds + OwningGameInstance);
    DWORD64* LocalPlayers = reinterpret_cast<DWORD64*>(*GameInstance1 + OFFSET_LocalPlayer);
    DWORD64* LocalPlayer = reinterpret_cast<DWORD64*>(*LocalPlayers);
    int32_t myPlayersHealth = *reinterpret_cast<int*>(*LocalPlayer + OFFSET_Health);
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,004
Реакции[?]
180
Поинты[?]
67K
Сверху Снизу