• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Гайд Как сделать ESP hack на движке Unity

  • Автор темы Автор темы Scab
  • Дата начала Дата начала
ЗАЧЕМ ДУМАТЬ ЕСЛИ МОЖНО НЕ ДУМАТЬ
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
25 Июл 2021
Сообщения
158
Реакции
38
Будем брать простую игру
Пожалуйста, авторизуйтесь для просмотра ссылки.
. И так что нам надо
1)
Пожалуйста, авторизуйтесь для просмотра ссылки.
(и с++ яп)
2)Игра которую взламываем
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.

4)В некоторых моментах
Пожалуйста, авторизуйтесь для просмотра ссылки.

5)Ну и последние умение читать и воспринимать информацию .
1 - 2 пункт я пропущу ( думаю вы сами знаете что делать ) .
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.
- полезная вещь ( генератор SDK на Unity (ТОЛЬКО Il2cpp!!! )
И так скачиваем распаковываем и открываем видим это
1636059092900.png

Выбираем первый пункт
дальше выбираем global-metadata.dat
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\BLOCKPOST_Data\il2cpp_data\Metadata
Дальше выбираем GameAssembly.dll
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\

Дальше выбираем с++ , Export и выбираем путь сохранение

Видим SDK
1636058964059.png

на надо только 2 папки appdata & framework
Переносим их в папку с проектом где есть imgui
Пожалуйста, авторизуйтесь для просмотра ссылки.

И нам надо пофиксить SDK , для этого билдим проэкт и смотрим ошибки
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
И всё у нас готовый проект с миню и сдк .
Теперь переходим к написанию ESP (наконец то :d)
Создаём 2 новых файла ESP.cpp и ESP.h
в ESP.h пишем
C++:
Expand Collapse Copy
class ESP
{
public:
    bool GetPlayerPos(int i, Vector2WH* posInScreenTrue);
    bool GetPlayerIsSpawnprotect(int i);
    app::PlayerData* GetPlayerData(int i);
    void Render();
    bool espActive;
    bool teamcheck;
    float colorWh[4] = { 0.780f, 0.031f, 0.756f,1.0f };
    float colorWhS[4] = { 0.007f, 0.152f, 0.788f,1.0f };
};

а в ESP.cpp пишем такой код

C++:
Expand Collapse Copy
#include "ESP.h"
#include "framework/il2cpp-appdata.h"
#include <iostream>
#include "includes.h"
#include "Addrs.h"
app::PlayerData* ESP::GetPlayerData(int i) // Получает врага по номеру
{
    PlayerDataArray* pdataA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
    if(pdataA->Player[i] == nullptr) // проверка на существование врага
        return nullptr;
    if (pdataA->Player[i]->fields.currweapon == nullptr) // проверка на оружие
        return nullptr;
    if (pdataA->Player[i]->fields.bstate == 5) // проверка на смерть
        return nullptr;
    if (teamcheck == true) // проверка включин ли team check
    {
        if ((*app::Controll__TypeInfo)->static_fields->pl->fields.team == pdataA->Player[i]->fields.team) // если тима совпадает то return null
        {
            return nullptr;
        }
    }
    return pdataA->Player[i];
}
bool ESP::GetPlayerPos(int i, Vector2WH* posArray) // Получает позицию врага на экране
{   
    app::PlayerData* enemy = GetPlayerData(i); // получаем врага
    if (enemy == nullptr) // проверка на существование врага
        return false;
    app::Vector3 posHead = app::Transform_get_position(app::GameObject_get_transform(enemy->fields.goHead, nullptr), nullptr); // получаем голову в мире
    app::Vector3 WorldPosHead = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, posHead, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr); // получаем голову на экране
    app::Vector3 WorldPosLeg = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, { posHead.x,posHead.y - 2,posHead.z }, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr);  // получаем ноги  на экране
    if (WorldPosHead.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    if (WorldPosLeg.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    posArray->pos[0] = { WorldPosLeg.x,app::Screen_get_height(nullptr) - WorldPosLeg.y };
    posArray->pos[1] = { WorldPosHead.x,app::Screen_get_height(nullptr) - WorldPosHead.y };
    float width = abs(posArray->pos[0].y - posArray->pos[1].y) * 0.3f;
    posArray->pos[0] = { posArray->pos[0].x + width, posArray->pos[0].y };
    posArray->pos[1] = { posArray->pos[1].x - width, posArray->pos[1].y };
    return true;
}
bool ESP::GetPlayerIsSpawnprotect(int i) //Если в бессмертии
{
    app::PlayerData* enemy = GetPlayerData(i); //  получаем врага
    if (enemy == nullptr)   // проверка на существование врага
        return false;
    if (enemy->fields.spawnprotect) // Если в бессмертии вернуть правду
    {
        return true;
    }
    return false;
}

void ESP::Render()  // отрисовка вх
{
    for (int i = 0; i < 40; i++)
    {       
        Vector2WH pos;
        if (GetPlayerPos(i,&pos))
        {
            int SpawnProtectEnemy = GetPlayerIsSpawnprotect(i);
            if (SpawnProtectEnemy == 0)
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWh[0],colorWh[1],colorWh[2],colorWh[3] }, 0, 15, 3);
            else
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWhS[0],colorWhS[1],colorWhS[2],colorWhS[3] }, 0, 15, 3);
        }       
    }
}

далие заходим в main.cpp
и пишем такой код

C++:
Expand Collapse Copy
// в самом вверху
#include "ESP.h"
ESP esp;

//в потоке меню
ImGui::Checkbox("ESP", &esp.espActive);
    ImGui::ColorEdit4("ESP COLOR", esp.colorWh);
    if (esp.espActive)
        esp.Render();
и всё у нас есть готовый wallHack
1636058927320.png



UPD :
Забил надо ещё в старте добавить init_il2cpp();

UPD: немного переделал код
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мне это напоминает кое-что:
Объяснил бы поподробнее, новичок бы часть кода не понял)
Ну комментарии тут понятны довольно, да и в целом гайдов по юнити читам на C++ мало видел ( Ткните пальцем если есть, с удовольствием почитаю )
Код конечно оставляет желать лучшего
 
Ну комментарии тут понятны довольно, да и в целом гайдов по юнити читам на C++ мало видел ( Ткните пальцем если есть, с удовольствием почитаю )
Код конечно оставляет желать лучшего
там целая книга по геймхаккингу есть
 
хороший гайд, мало сейчас такого, продолжай!
 
Будем брать простую игру
Пожалуйста, авторизуйтесь для просмотра ссылки.
. И так что нам надо
1)
Пожалуйста, авторизуйтесь для просмотра ссылки.
(и с++ яп)
2)Игра которую взламываем
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.

4)В некоторых моментах
Пожалуйста, авторизуйтесь для просмотра ссылки.

5)Ну и последние умение читать и воспринимать информацию .
1 - 2 пункт я пропущу ( думаю вы сами знаете что делать ) .
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.
- полезная вещь ( генератор SDK на Unity (ТОЛЬКО Il2cpp!!! )
И так скачиваем распаковываем и открываем видим это
Посмотреть вложение 179018
Выбираем первый пункт
дальше выбираем global-metadata.dat
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\BLOCKPOST_Data\il2cpp_data\Metadata
Дальше выбираем GameAssembly.dll
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\

Дальше выбираем с++ , Export и выбираем путь сохранение

Видим SDK
Посмотреть вложение 179017
на надо только 2 папки appdata & framework
Переносим их в папку с проектом где есть imgui
Пожалуйста, авторизуйтесь для просмотра ссылки.

И нам надо пофиксить SDK , для этого билдим проэкт и смотрим ошибки
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
И всё у нас готовый проект с миню и сдк .
Теперь переходим к написанию ESP (наконец то :d)
Создаём 2 новых файла ESP.cpp и ESP.h
в ESP.h пишем
C++:
Expand Collapse Copy
class ESP
{
public:
    bool GetPlayerPos(int i, Vector2WH* posInScreenTrue);
    bool GetPlayerIsSpawnprotect(int i);
    app::PlayerData* GetPlayerData(int i);
    void Render();
    bool espActive;
    bool teamcheck;
    float colorWh[4] = { 0.780f, 0.031f, 0.756f,1.0f };
    float colorWhS[4] = { 0.007f, 0.152f, 0.788f,1.0f };
};

а в ESP.cpp пишем такой код

C++:
Expand Collapse Copy
#include "ESP.h"
#include "framework/il2cpp-appdata.h"
#include <iostream>
#include "includes.h"
#include "Addrs.h"
app::PlayerData* ESP::GetPlayerData(int i) // Получает врага по номеру
{
    PlayerDataArray* pdataA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
    if(pdataA->Player[i] == nullptr) // проверка на существование врага
        return nullptr;
    if (pdataA->Player[i]->fields.currweapon == nullptr) // проверка на оружие
        return nullptr;
    if (pdataA->Player[i]->fields.bstate == 5) // проверка на смерть
        return nullptr;
    if (teamcheck == true) // проверка включин ли team check
    {
        if ((*app::Controll__TypeInfo)->static_fields->pl->fields.team == pdataA->Player[i]->fields.team) // если тима совпадает то return null
        {
            return nullptr;
        }
    }
    return pdataA->Player[i];
}
bool ESP::GetPlayerPos(int i, Vector2WH* posArray) // Получает позицию врага на экране
{  
    app::PlayerData* enemy = GetPlayerData(i); // получаем врага
    if (enemy == nullptr) // проверка на существование врага
        return false;
    app::Vector3 posHead = app::Transform_get_position(app::GameObject_get_transform(enemy->fields.goHead, nullptr), nullptr); // получаем голову в мире
    app::Vector3 WorldPosHead = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, posHead, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr); // получаем голову на экране
    app::Vector3 WorldPosLeg = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, { posHead.x,posHead.y - 2,posHead.z }, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr);  // получаем ноги  на экране
    if (WorldPosHead.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    if (WorldPosLeg.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    posArray->pos[0] = { WorldPosLeg.x,app::Screen_get_height(nullptr) - WorldPosLeg.y };
    posArray->pos[1] = { WorldPosHead.x,app::Screen_get_height(nullptr) - WorldPosHead.y };
    float width = abs(posArray->pos[0].y - posArray->pos[1].y) * 0.3f;
    posArray->pos[0] = { posArray->pos[0].x + width, posArray->pos[0].y };
    posArray->pos[1] = { posArray->pos[1].x - width, posArray->pos[1].y };
    return true;
}
bool ESP::GetPlayerIsSpawnprotect(int i) //Если в бессмертии
{
    app::PlayerData* enemy = GetPlayerData(i); //  получаем врага
    if (enemy == nullptr)   // проверка на существование врага
        return false;
    if (enemy->fields.spawnprotect) // Если в бессмертии вернуть правду
    {
        return true;
    }
    return false;
}

void ESP::Render()  // отрисовка вх
{
    for (int i = 0; i < 40; i++)
    {      
        Vector2WH pos;
        if (GetPlayerPos(i,&pos))
        {
            int SpawnProtectEnemy = GetPlayerIsSpawnprotect(i);
            if (SpawnProtectEnemy == 0)
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWh[0],colorWh[1],colorWh[2],colorWh[3] }, 0, 15, 3);
            else
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWhS[0],colorWhS[1],colorWhS[2],colorWhS[3] }, 0, 15, 3);
        }      
    }
}

далие заходим в main.cpp
и пишем такой код

C++:
Expand Collapse Copy
// в самом вверху
#include "ESP.h"
ESP esp;

//в потоке меню
ImGui::Checkbox("ESP", &esp.espActive);
    ImGui::ColorEdit4("ESP COLOR", esp.colorWh);
    if (esp.espActive)
        esp.Render();
и всё у нас есть готовый wallHack Посмотреть вложение 179016


UPD :
Забил надо ещё в старте добавить init_il2cpp();

UPD: немного переделал код
когда закидываю game-assembly ошибка
 
такая вот ошибка
1636682095285.png
 
Ахуенный гайд, просто спасти и ничего не пойми
Если с классом есп хотя бы что-то понятно, то новичок не поймет как ты обращаешься к полям класса самой игры
 
Давай объективно и по правде.
3)il2cppInspector - полезная вещь ( генератор SDK на Unity (ТОЛЬКО Il2cpp!!! )
И так скачиваем распаковываем и открываем видим это
Тут новичок вряд-ли поймет хоть что-то. Потому что вообще нигде не упомянул что такое il2cpp. Не упомянул для чего нам это SDK, скажем так сделал гайд для новичков, а на деле для тех кто уже имел опыт с читами и это SDK писал сам.
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
Тут извини, но даже я нихуя не понял, кроме того что где-то надо удалить точку входа. Формулируй мысль поточнее пожалуйста.
Итак, по всей видимости объяснять почему ты передаешь в функции именно эти аргументы не нужно. Ведь можно брать любые типы переменных?

bool GetPlayerPos(int i, Vector2WH* posInScreenTrue); bool GetPlayerIsSpawnprotect(int i); app::PlayerData* GetPlayerData(int i);
Откуда-то взялись адреса какие-то...
PlayerDataArray* pdataA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
Где объяснение того, что это вообще? Обращаешься к полю какого-то непонятного класса, мог бы хоть его в dnSpy показать, чтобы мы поняли почему именно он, а не десятки ему подобных?
Ты так формулируешь мысль, что кажется, будто ты сам не понимаешь что делаешь.
for (int i = 0; i < 40; i++)
Почему цикл листит именно до 40? Больше меньше религия новичку не позволит?
 
Давай объективно и по правде.

Тут новичок вряд-ли поймет хоть что-то. Потому что вообще нигде не упомянул что такое il2cpp. Не упомянул для чего нам это SDK, скажем так сделал гайд для новичков, а на деле для тех кто уже имел опыт с читами и это SDK писал сам.

Тут извини, но даже я нихуя не понял, кроме того что где-то надо удалить точку входа. Формулируй мысль поточнее пожалуйста.
Итак, по всей видимости объяснять почему ты передаешь в функции именно эти аргументы не нужно. Ведь можно брать любые типы переменных?



Откуда-то взялись адреса какие-то...

Где объяснение того, что это вообще? Обращаешься к полю какого-то непонятного класса, мог бы хоть его в dnSpy показать, чтобы мы поняли почему именно он, а не десятки ему подобных?
Ты так формулируешь мысль, что кажется, будто ты сам не понимаешь что делаешь.

Почему цикл листит именно до 40? Больше меньше религия новичку не позволит?
глянь мою ошибку, если шаришь
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Будем брать простую игру
Пожалуйста, авторизуйтесь для просмотра ссылки.
. И так что нам надо
1)
Пожалуйста, авторизуйтесь для просмотра ссылки.
(и с++ яп)
2)Игра которую взламываем
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.

4)В некоторых моментах
Пожалуйста, авторизуйтесь для просмотра ссылки.

5)Ну и последние умение читать и воспринимать информацию .
1 - 2 пункт я пропущу ( думаю вы сами знаете что делать ) .
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.
- полезная вещь ( генератор SDK на Unity (ТОЛЬКО Il2cpp!!! )
И так скачиваем распаковываем и открываем видим это
Посмотреть вложение 179018
Выбираем первый пункт
дальше выбираем global-metadata.dat
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\BLOCKPOST_Data\il2cpp_data\Metadata
Дальше выбираем GameAssembly.dll
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\

Дальше выбираем с++ , Export и выбираем путь сохранение

Видим SDK
Посмотреть вложение 179017
на надо только 2 папки appdata & framework
Переносим их в папку с проектом где есть imgui
Пожалуйста, авторизуйтесь для просмотра ссылки.

И нам надо пофиксить SDK , для этого билдим проэкт и смотрим ошибки
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
И всё у нас готовый проект с миню и сдк .
Теперь переходим к написанию ESP (наконец то :d)
Создаём 2 новых файла ESP.cpp и ESP.h
в ESP.h пишем
C++:
Expand Collapse Copy
class ESP
{
public:
    bool GetPlayerPos(int i, Vector2WH* posInScreenTrue);
    bool GetPlayerIsSpawnprotect(int i);
    app::PlayerData* GetPlayerData(int i);
    void Render();
    bool espActive;
    bool teamcheck;
    float colorWh[4] = { 0.780f, 0.031f, 0.756f,1.0f };
    float colorWhS[4] = { 0.007f, 0.152f, 0.788f,1.0f };
};

а в ESP.cpp пишем такой код

C++:
Expand Collapse Copy
#include "ESP.h"
#include "framework/il2cpp-appdata.h"
#include <iostream>
#include "includes.h"
#include "Addrs.h"
app::PlayerData* ESP::GetPlayerData(int i) // Получает врага по номеру
{
    PlayerDataArray* pdataA = (PlayerDataArray*)(*app::PLH__TypeInfo)->static_fields->player;
    if(pdataA->Player[i] == nullptr) // проверка на существование врага
        return nullptr;
    if (pdataA->Player[i]->fields.currweapon == nullptr) // проверка на оружие
        return nullptr;
    if (pdataA->Player[i]->fields.bstate == 5) // проверка на смерть
        return nullptr;
    if (teamcheck == true) // проверка включин ли team check
    {
        if ((*app::Controll__TypeInfo)->static_fields->pl->fields.team == pdataA->Player[i]->fields.team) // если тима совпадает то return null
        {
            return nullptr;
        }
    }
    return pdataA->Player[i];
}
bool ESP::GetPlayerPos(int i, Vector2WH* posArray) // Получает позицию врага на экране
{  
    app::PlayerData* enemy = GetPlayerData(i); // получаем врага
    if (enemy == nullptr) // проверка на существование врага
        return false;
    app::Vector3 posHead = app::Transform_get_position(app::GameObject_get_transform(enemy->fields.goHead, nullptr), nullptr); // получаем голову в мире
    app::Vector3 WorldPosHead = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, posHead, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr); // получаем голову на экране
    app::Vector3 WorldPosLeg = app::Camera_WorldToScreenPoint((*app::Controll__TypeInfo)->static_fields->csCam, { posHead.x,posHead.y - 2,posHead.z }, app::Camera_MonoOrStereoscopicEye__Enum::Mono, nullptr);  // получаем ноги  на экране
    if (WorldPosHead.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    if (WorldPosLeg.z <= 1.0f) //  проверка чтоб не рисовало за экраном
        return false;
    posArray->pos[0] = { WorldPosLeg.x,app::Screen_get_height(nullptr) - WorldPosLeg.y };
    posArray->pos[1] = { WorldPosHead.x,app::Screen_get_height(nullptr) - WorldPosHead.y };
    float width = abs(posArray->pos[0].y - posArray->pos[1].y) * 0.3f;
    posArray->pos[0] = { posArray->pos[0].x + width, posArray->pos[0].y };
    posArray->pos[1] = { posArray->pos[1].x - width, posArray->pos[1].y };
    return true;
}
bool ESP::GetPlayerIsSpawnprotect(int i) //Если в бессмертии
{
    app::PlayerData* enemy = GetPlayerData(i); //  получаем врага
    if (enemy == nullptr)   // проверка на существование врага
        return false;
    if (enemy->fields.spawnprotect) // Если в бессмертии вернуть правду
    {
        return true;
    }
    return false;
}

void ESP::Render()  // отрисовка вх
{
    for (int i = 0; i < 40; i++)
    {      
        Vector2WH pos;
        if (GetPlayerPos(i,&pos))
        {
            int SpawnProtectEnemy = GetPlayerIsSpawnprotect(i);
            if (SpawnProtectEnemy == 0)
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWh[0],colorWh[1],colorWh[2],colorWh[3] }, 0, 15, 3);
            else
                ImGui::GetBackgroundDrawList()->AddRect({ pos.pos[0].x,pos.pos[0].y }, { pos.pos[1].x,pos.pos[1].y }, ImColor{ colorWhS[0],colorWhS[1],colorWhS[2],colorWhS[3] }, 0, 15, 3);
        }      
    }
}

далие заходим в main.cpp
и пишем такой код

C++:
Expand Collapse Copy
// в самом вверху
#include "ESP.h"
ESP esp;

//в потоке меню
ImGui::Checkbox("ESP", &esp.espActive);
    ImGui::ColorEdit4("ESP COLOR", esp.colorWh);
    if (esp.espActive)
        esp.Render();
и всё у нас есть готовый wallHack Посмотреть вложение 179016


UPD :
Забил надо ещё в старте добавить init_il2cpp();

UPD: немного переделал код
Боксы бай @aStonedPenguin для аимвара
 
Давай объективно и по правде.

Тут новичок вряд-ли поймет хоть что-то. Потому что вообще нигде не упомянул что такое il2cpp. Не упомянул для чего нам это SDK, скажем так сделал гайд для новичков, а на деле для тех кто уже имел опыт с читами и это SDK писал сам.

Тут извини, но даже я нихуя не понял, кроме того что где-то надо удалить точку входа. Формулируй мысль поточнее пожалуйста.
Итак, по всей видимости объяснять почему ты передаешь в функции именно эти аргументы не нужно. Ведь можно брать любые типы переменных?



Откуда-то взялись адреса какие-то...

Где объяснение того, что это вообще? Обращаешься к полю какого-то непонятного класса, мог бы хоть его в dnSpy показать, чтобы мы поняли почему именно он, а не десятки ему подобных?
Ты так формулируешь мысль, что кажется, будто ты сам не понимаешь что делаешь.

Почему цикл листит именно до 40? Больше меньше религия новичку не позволит?
1) можно было и загуглить
1636697456208.png


2)да там скрины не давало загрузить вот и вышел скам
1636697500614.png

1636697510459.png

3)
это просто baseModule
C++:
Expand Collapse Copy
class Addrs
{
public:
    static uintptr_t baseModule = reinterpret_cast<uintptr_t>(GetModuleHandle(TEXT("GameAssembly.dll")));
};

и что не понятно с
C++:
Expand Collapse Copy
bool GetPlayerPos(int i, Vector2WH* posInScreenTrue); bool GetPlayerIsSpawnprotect(int i); app::PlayerData* GetPlayerData(int i);
?
4) Берём PlayerDataList из Static штуки
5) в игре максимум 40 человек на сервере
Обфускация
Ахуенный гайд, просто спасти и ничего не пойми
Если с классом есп хотя бы что-то понятно, то новичок не поймет как ты обращаешься к полям класса самой игры
+ я всё вроде в комментах объяснил :/
 
дополнение до 2
1636697862716.png

Ахуенно объяснил, похлопаю
а что тебе не понятного ?
что есть в игре статическая память а есть динамическая или что?
хорошо вот подробно для тебя

PlayerDataArray* - это
C++:
Expand Collapse Copy
class PlayerDataArray
{
public:
    char pad_0012[0xF]; //0x00c
    app::PlayerData* Player[40]; //0x0010   // смещение на дату
};
app::PLH__TypeInfo - это класс в котором есть статические штуки
player - это статическая штука (EntityList - для пастеров из ксго )
 
Будет гайд по mono?
 
Назад
Сверху Снизу