Гайд Делаем свои читы с нуля. Урок #3. Делаем Glow ESP

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
Пожалуйста, авторизуйтесь для просмотра ссылки.

Сегодня мы создадим свой external Glow ESP на основе навыков из прошлых уроков.
Возьмем код из наших прошлых уроков и оставим только:

Создадим структуру glow обводки:
C++:
typedef struct GlowObjectDefinition_t {
    float r;
    float g;
    float b;
    float a;
    uint8_t unk1[16];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloom;
    int GlowStyle;
    uint8_t unk2[10];
} GlowObjectDefinition_t;
Это аналог структуры glow из самой игры.
Добавим новые адреса типа int:
C++:
int glowArray = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager);
int glowCount = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager + 0x4);
Они отвечают за игровой Glow.
Создадим цикл for, который будет просчитывать количество объектов glow:
C++:
for (int i = 0; i < glowCount; i++) {
///код будем вставлять сюда...
}
Просчитаем количество объектов:
C++:
DWORD gEntity = mem.Read<DWORD>(glowArray + 0x38 * i);
if (!gEntity)
    continue;
Создадим адреса для отсеивания:
C++:
int entHp = mem.Read<int>(gEntity + m_iHealth);
if (!entHp)
    continue;

int enTeam = mem.Read<int>(gEntity + m_iTeamNum);

if (enTeam == LocalTeam)
    continue;
Создадим указатель на структуру нашего glow и определим ему значения:
C++:
static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);
            if (enTeam == 3)
            {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.8666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }

            if (enTeam == 2)
            {
                Glow.r = 0.8784314f;
                Glow.g = 0.6862745f;
                Glow.b = 0.3372549f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
enTeam 2 - Команда Террористов, enTeam 3 - Команда КТ.
Мы задаем им цвет в формате RGB, Glow.m_bRenderWhenOccluded рендерит нашу обводку с окклюзией.
Запишем в память наши значения из структуры glow:
C++:
mem.Write<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4, Glow);
C++:
#include <iostream>
#include "Memory.h"
#include "offsets.hpp"
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
PModule clientAddr;
memory mem;

typedef struct GlowObjectDefinition_t {
    float r;
    float g;
    float b;
    float a;
    uint8_t unk1[16];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloom;
    int GlowStyle;
    uint8_t unk2[10];
} GlowObjectDefinition_t;

int main()
{
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    clientAddr = mem.GetModule("client.dll");
    std::cout << "Initialized";
    while (true) {
        system("cls");
        DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
        DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
        DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);

        int glowArray = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager);
        int glowCount = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager + 0x4);
        
        for (int i = 0; i < glowCount; i++) {
            DWORD gEntity = mem.Read<DWORD>(glowArray + 0x38 * i);
            if (!gEntity)
                continue;
            int entHp = mem.Read<int>(gEntity + m_iHealth);
            if (!entHp)
                continue;

            int enTeam = mem.Read<int>(gEntity + m_iTeamNum);

            if (enTeam == LocalTeam)
                continue;
            static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);
            if (enTeam == 3)
            {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.8666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }

            if (enTeam == 2)
            {
                Glow.r = 0.8784314f;
                Glow.g = 0.6862745f;
                Glow.b = 0.3372549f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
            mem.Write<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4, Glow);
        }
        
    }
    return 0;
}
Надеюсь помог :>​
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
43
Реакции[?]
8
Поинты[?]
0
Интересно прочесть вообще. Потом прочту. Ещё вот, крч хотел екстернал сделать на си шарпе. Типо помнишь на питоне выкладывали вх. Я короче питоновский скрипт на фейсите запускал и збс.
 
Забаненный
Статус
Оффлайн
Регистрация
3 Июн 2021
Сообщения
33
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Что значит "uint8_t unk1[16];" и "uint8_t unk2[10];"
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
NE CORMULEC
Пользователь
Статус
Оффлайн
Регистрация
3 Апр 2020
Сообщения
401
Реакции[?]
33
Поинты[?]
1K
Пожалуйста, авторизуйтесь для просмотра ссылки.

Сегодня мы создадим свой external Glow ESP на основе навыков из прошлых уроков.
Возьмем код из наших прошлых уроков и оставим только:

Создадим структуру glow обводки:
C++:
typedef struct GlowObjectDefinition_t {
    float r;
    float g;
    float b;
    float a;
    uint8_t unk1[16];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloom;
    int GlowStyle;
    uint8_t unk2[10];
} GlowObjectDefinition_t;
Это аналог структуры glow из самой игры.
Добавим новые адреса типа int:
C++:
int glowArray = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager);
int glowCount = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager + 0x4);
Они отвечают за игровой Glow.
Создадим цикл for, который будет просчитывать количество объектов glow:
C++:
for (int i = 0; i < glowCount; i++) {
///код будем вставлять сюда...
}
Просчитаем количество объектов:
C++:
DWORD gEntity = mem.Read<DWORD>(glowArray + 0x38 * i);
if (!gEntity)
    continue;
Создадим адреса для отсеивания:
C++:
int entHp = mem.Read<int>(gEntity + m_iHealth);
if (!entHp)
    continue;

int enTeam = mem.Read<int>(gEntity + m_iTeamNum);

if (enTeam == LocalTeam)
    continue;
Создадим указатель на структуру нашего glow и определим ему значения:
C++:
static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);
            if (enTeam == 3)
            {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.8666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }

            if (enTeam == 2)
            {
                Glow.r = 0.8784314f;
                Glow.g = 0.6862745f;
                Glow.b = 0.3372549f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
enTeam 2 - Команда Террористов, enTeam 3 - Команда КТ.
Мы задаем им цвет в формате RGB, Glow.m_bRenderWhenOccluded рендерит нашу обводку с окклюзией.
Запишем в память наши значения из структуры glow:
C++:
mem.Write<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4, Glow);
C++:
#include <iostream>
#include "Memory.h"
#include "offsets.hpp"
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
PModule clientAddr;
memory mem;

typedef struct GlowObjectDefinition_t {
    float r;
    float g;
    float b;
    float a;
    uint8_t unk1[16];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloom;
    int GlowStyle;
    uint8_t unk2[10];
} GlowObjectDefinition_t;

int main()
{
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    clientAddr = mem.GetModule("client.dll");
    std::cout << "Initialized";
    while (true) {
        system("cls");
        DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
        DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
        DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);

        int glowArray = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager);
        int glowCount = mem.Read<int>(clientAddr.dwBase + dwGlowObjectManager + 0x4);
       
        for (int i = 0; i < glowCount; i++) {
            DWORD gEntity = mem.Read<DWORD>(glowArray + 0x38 * i);
            if (!gEntity)
                continue;
            int entHp = mem.Read<int>(gEntity + m_iHealth);
            if (!entHp)
                continue;

            int enTeam = mem.Read<int>(gEntity + m_iTeamNum);

            if (enTeam == LocalTeam)
                continue;
            static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);
            if (enTeam == 3)
            {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.8666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }

            if (enTeam == 2)
            {
                Glow.r = 0.8784314f;
                Glow.g = 0.6862745f;
                Glow.b = 0.3372549f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
            mem.Write<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4, Glow);
        }
       
    }
    return 0;
}
Надеюсь помог :>​
что надо сделать чтобы это всё работало?
 
Сверху Снизу