ЗАЧЕМ ДУМАТЬ ЕСЛИ МОЖНО НЕ ДУМАТЬ
-
Автор темы
- #1
Будем брать простую игру
1)
2)Игра которую взламываем
3)
4)В некоторых моментах
5)Ну и последние умение читать и воспринимать информацию .
1 - 2 пункт я пропущу ( думаю вы сами знаете что делать ) .
3)
И так скачиваем распаковываем и открываем видим это
![1636059092900.png 1636059092900.png](https://yougame.biz/data/attachments/178/178883-cb8e4a0ec55a229ff05df7dce6b8edb2.jpg)
Выбираем первый пункт
дальше выбираем global-metadata.dat
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\BLOCKPOST_Data\il2cpp_data\Metadata
Дальше выбираем GameAssembly.dll
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\
Дальше выбираем с++ , Export и выбираем путь сохранение
Видим SDK
![1636058964059.png 1636058964059.png](https://yougame.biz/data/attachments/178/178882-f6a12099d091ccff50ab0340e93ececc.jpg)
на надо только 2 папки appdata & framework
Переносим их в папку с проектом где есть imgui
И нам надо пофиксить SDK , для этого билдим проэкт и смотрим ошибки
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
И всё у нас готовый проект с миню и сдк .
Теперь переходим к написанию ESP (наконец то :d)
Создаём 2 новых файла ESP.cpp и ESP.h
в ESP.h пишем
а в ESP.cpp пишем такой код
далие заходим в main.cpp
и пишем такой код
и всё у нас есть готовый wallHack ![1636058927320.png 1636058927320.png](https://yougame.biz/data/attachments/178/178881-20777791135a6023c1d84a8c0c9f33d4.jpg)
UPD :
Забил надо ещё в старте добавить init_il2cpp();
UPD: немного переделал код
Пожалуйста, авторизуйтесь для просмотра ссылки.
. И так что нам надо1)
Пожалуйста, авторизуйтесь для просмотра ссылки.
(и с++ яп)2)Игра которую взламываем
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.
4)В некоторых моментах
Пожалуйста, авторизуйтесь для просмотра ссылки.
5)Ну и последние умение читать и воспринимать информацию .
1 - 2 пункт я пропущу ( думаю вы сами знаете что делать ) .
3)
Пожалуйста, авторизуйтесь для просмотра ссылки.
- полезная вещь ( генератор SDK на Unity (ТОЛЬКО Il2cpp!!! )И так скачиваем распаковываем и открываем видим это
![1636059092900.png 1636059092900.png](https://yougame.biz/data/attachments/178/178883-cb8e4a0ec55a229ff05df7dce6b8edb2.jpg)
Выбираем первый пункт
дальше выбираем global-metadata.dat
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\BLOCKPOST_Data\il2cpp_data\Metadata
Дальше выбираем GameAssembly.dll
в моём случаи это D:\steam\steamapps\common\BLOCKPOST\
Дальше выбираем с++ , Export и выбираем путь сохранение
Видим SDK
![1636058964059.png 1636058964059.png](https://yougame.biz/data/attachments/178/178882-f6a12099d091ccff50ab0340e93ececc.jpg)
на надо только 2 папки appdata & framework
Переносим их в папку с проектом где есть imgui
Пожалуйста, авторизуйтесь для просмотра ссылки.
И нам надо пофиксить SDK , для этого билдим проэкт и смотрим ошибки
и так видим ошибки
впринципи мы можем сразу переместить все файлы из appdata в framework и всё так и сделаем и удаляем в папке framework dllmain
и так билдим ещё раз
так заходим в helpers.cpp и удаляем эти две штуки
билдем.
И всё у нас готовый проект с миню и сдк .
Теперь переходим к написанию ESP (наконец то :d)
Создаём 2 новых файла ESP.cpp и ESP.h
в ESP.h пишем
C++:
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 };
};
C++:
#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);
}
}
}
и пишем такой код
C++:
// в самом вверху
#include "ESP.h"
ESP esp;
//в потоке меню
ImGui::Checkbox("ESP", &esp.espActive);
ImGui::ColorEdit4("ESP COLOR", esp.colorWh);
if (esp.espActive)
esp.Render();
![1636058927320.png 1636058927320.png](https://yougame.biz/data/attachments/178/178881-20777791135a6023c1d84a8c0c9f33d4.jpg)
UPD :
Забил надо ещё в старте добавить init_il2cpp();
UPD: немного переделал код
Последнее редактирование: