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

На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,052
Реакции[?]
183
Поинты[?]
72K
Есть гайдик какой нибудь, как читы пишутся на Unreal Engine 4 ? Нужно SDK делать или мне не обязательно что бы вывести значение хп , делать сдк.
 
Пользователь
Статус
Оффлайн
Регистрация
17 Июл 2021
Сообщения
462
Реакции[?]
118
Поинты[?]
11K
можно и без сдк, но будет вери неудобно каждый раз обновлять оффсеты
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,052
Реакции[?]
183
Поинты[?]
72K
можно и без сдк, но будет вери неудобно каждый раз обновлять оффсеты
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,052
Реакции[?]
183
Поинты[?]
72K
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,052
Реакции[?]
183
Поинты[?]
72K
так причем здесь сдк? он тебе дал наследование как добраться до локал плеера
Хз почему мне выводит 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,052
Реакции[?]
183
Поинты[?]
72K
Сверху Снизу