Гайд Как сделать GlowESP для CS: GO с автообновлением оффсетов и с встроенным инжектором.

Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2017
Сообщения
102
Реакции[?]
10
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет! Сегодня я вам расскажу и покажу, как сделать GlowESP для CS: GO с автообновлением оффсетов и с встроенным инжектором. Приступим!
Шаг 1. Создаём проект в Visual Studio. (я использую professional 2017)
Сверху слева нажимаем Файл > Создать > Проект. В открытом окне слева выбираем Visual C++. Далее нажимаем "Консольное приложение Windows". Снизу пишем название нашего проекта (в моём случае это esp).


Шаг 2. Настраиваем проект.
Сначала сверху в "конфигурации решения" выбираем "Realese". А где написано "платформы решения" выбираем "x86". Далее сверху нажимаем "Отладка" и снизу выбираем "(название вашего проекта): свойства". Далее где написано "Набор символов" меняем на "Использовать многобайтовую кодировку". Далее где написано "Версия пакета SDK для Windows" ставим на 10.0.17134.0 (это у вас будет только если вы установите DirectSDK June 10. Ссылка на него:
Пожалуйста, авторизуйтесь для просмотра ссылки.
). И последнее, что мы должны сделать в этом шагу, так это в "Набор инструментов платформы" выставить Visual Studio 2017 (v141) (это у вас будет показываться, как я не ошибаюсь только тогда, если вы будете делать проект в Visual Studio 2017) и обязательно не забудьте нажать кнопку "Применить". Поздравляю вас! Половина пути пройдена. Приступим к следующему шагу!


Шаг 3. Пишем исходный код (предпоследний шаг).
После того как мы всё сделали справа заходим в (название вашего проекта).cpp. Далее стираем там всё. Я оставлю исходный код, который вы должны будете скопировать и вставить в (название вашего проекта).cpp.
Код:
#include "stdafx.h"
#include <windows.h>
#include <TlHelp32.h>
#include <iostream>

typedef unsigned char uint8_t;

template <typename T, size_t N>

size_t countof(T(&array)[N])
{
    return N;
}

DWORD dwLocalPlayer; //will be scanned
DWORD dwEntityList;  //will be scanned
DWORD dwGlow;        //will be scanned

DWORD dwTeam = 0xF0;
DWORD dwDormant = 0xE9;

struct PModule
{
    DWORD dwBase;
    DWORD dwSize;
};

/* Debugger/Process API implementation class */
class process
{

public:
    bool Attach(char* pName, DWORD rights)
    {
        HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        PROCESSENTRY32 entry;
        entry.dwSize = sizeof(entry);

        do
            if (!strcmp(entry.szExeFile, pName)) {
                pID = entry.th32ProcessID;
                CloseHandle(handle);
                _process = OpenProcess(rights, false, pID);
                return true;
            }
        while (Process32Next(handle, &entry));
        return false;
    }

    PModule GetModule(char* moduleName) {
        HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);
        MODULEENTRY32 mEntry;
        mEntry.dwSize = sizeof(mEntry);

        do {
            if (!strcmp(mEntry.szModule, (LPSTR)moduleName)) {
                CloseHandle(module);

                PModule mod = { (DWORD)mEntry.hModule, mEntry.modBaseSize };
                return mod;
            }
        } while (Module32Next(module, &mEntry));

        PModule mod = { (DWORD)false, (DWORD)false };
        return mod;
    }

    template <class T>
    T Read(DWORD addr) {
        T _read;
        ReadProcessMemory(_process, (LPVOID)addr, &_read, sizeof(T), NULL);
        return _read;
    }
    template <class T>
    void Write(DWORD addr, T val) {
        WriteProcessMemory(_process, (LPVOID)addr, &val, sizeof(T), NULL);
    }

    DWORD FindPattern(DWORD start, DWORD size, const char* sig, const char* mask) {
        BYTE* data = new BYTE[size];

        unsigned long bytesRead;
        if (!ReadProcessMemory(_process, (LPVOID)start, data, size, &bytesRead)) {
            return NULL;
        }

        for (DWORD i = 0; i < size; i++) {
            if (DataCompare((const BYTE*)(data + i), (const BYTE*)sig, mask)) {
                return start + i;
            }
        }
        return NULL;
    }

    DWORD FindPatternArray(DWORD start, DWORD size, const char* mask, int count, ...) {
        char* sig = new char[count + 1];
        va_list ap;
        va_start(ap, count);
        for (int i = 0; i < count; i++) {
            char read = va_arg(ap, char);
            sig[i] = read;
        }
        va_end(ap);
        sig[count] = '\0';
        return FindPattern(start, size, sig, mask);
    }


private:
    HANDLE _process;
    DWORD pID;
    bool DataCompare(const BYTE* pData, const BYTE* pMask, const char* pszMask) {
        for (; *pszMask; ++pszMask, ++pData, ++pMask) {
            if (*pszMask == 'x' && *pData != *pMask) {
                return false;
            }
        }
        return (*pszMask == NULL);
    }
};

/* Glow Object structure in csgo */
struct glow_t
{
    DWORD dwBase;
    float r;
    float g;
    float b;
    float a;
    uint8_t unk1[16];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloom;
    uint8_t unk2[14];
};

/* Entity structure in csgo */
struct Entity
{
    DWORD dwBase;
    int team;
    bool is_dormant;
};

/* Player structure in csgo */
struct Player
{
    DWORD dwBase;
    bool isDormant;
};

process memory;
process _modClient;
process* mem;
PModule modClient;

int iFriendlies;
int iEnemies;

Entity entEnemies[32];
Entity entFriendlies[32];
Entity me;

void update_entity_data(Entity* e, DWORD dwBase)
{
    int dormant = memory.Read<int>(dwBase + dwDormant);
    e->dwBase = dwBase;
    e->team = memory.Read<int>(dwBase + dwTeam);
    e->is_dormant = dormant == 1;
}

/* Get Pointer To Client.dll*/

PModule* GetClientModule() {
    if (modClient.dwBase == 0 && modClient.dwSize == 0) {
        modClient = memory.GetModule("client_panorama.dll");
    }
    return &modClient;
}

Entity* GetEntityByBase(DWORD dwBase) {

    for (int i = 0; i < iFriendlies; i++) {
        if (dwBase == entFriendlies[i].dwBase) {
            return &entFriendlies[i];
        }
    }
    for (int i = 0; i < iEnemies; i++) {
        if (dwBase == entEnemies[i].dwBase) {
            return &entEnemies[i];
        }
    }
    return nullptr;
}

/* offset updating class, that uses patterns to find memory addresses */
class offset
{
private:
    static void update_local_player() {
        DWORD lpStart = mem->FindPatternArray(modClient.dwBase, modClient.dwSize, "xxx????xx????xxxxx?", 19, 0x8D, 0x34, 0x85, 0x0, 0x0, 0x0, 0x0, 0x89, 0x15, 0x0, 0x0, 0x0, 0x0, 0x8B, 0x41, 0x8, 0x8B, 0x48, 0x0);
        DWORD lpP1 = mem->Read<DWORD>(lpStart + 3);
        BYTE lpP2 = mem->Read<BYTE>(lpStart + 18);
        dwLocalPlayer = (lpP1 + lpP2) - modClient.dwBase;
    }

    static void update_entity_list() {
        DWORD elStart = mem->FindPatternArray(modClient.dwBase, modClient.dwSize, "x????xx?xxx", 11, 0x5, 0x0, 0x0, 0x0, 0x0, 0xC1, 0xE9, 0x0, 0x39, 0x48, 0x4);
        DWORD elP1 = mem->Read<DWORD>(elStart + 1);
        BYTE elP2 = mem->Read<BYTE>(elStart + 7);
        dwEntityList = (elP1 + elP2) - modClient.dwBase;
    }

    static void update_glow() {
        DWORD gpStart = mem->FindPatternArray(modClient.dwBase, modClient.dwSize, "xxx????xxxxx????????", 20, 0x0F, 0x11, 0x05, 0x0, 0x0, 0x0, 0x0, 0x83, 0xC8, 0x01, 0xC7, 0x05, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0);
        dwGlow = mem->Read<DWORD>(gpStart + 3) - modClient.dwBase;
    }

public:
    static void get_offset(process* m) {
        mem = m;
        modClient = mem->GetModule("client_panorama.dll");
        update_local_player();
        update_entity_list();
        update_glow();
    }

    //constantly scanning & updating our offsets
    static DWORD WINAPI scan_offsets(LPVOID PARAM)
    {
        Entity players[64];
        while (true) {
            Sleep(1);
            DWORD playerBase = memory.Read<DWORD>(GetClientModule()->dwBase + dwLocalPlayer);
            int cp = 0;

            update_entity_data(&me, playerBase);
            for (int i = 1; i < 64; i++) {
                DWORD entBase = memory.Read<DWORD>((GetClientModule()->dwBase + dwEntityList) + i * 0x10);

                if (entBase == NULL)
                    continue;

                update_entity_data(&players[cp], entBase);

                cp++;
            }

            int cf = 0, ce = 0;

            for (int i = 0; i < cp; i++) {
                if (players[i].team == me.team) {
                    entFriendlies[cf] = players[i];
                    cf++;
                }
                else {
                    entEnemies[ce] = players[i];
                    ce++;
                }
            }

            iEnemies = ce;
            iFriendlies = cf;
        }
    }
};


class virtualesp
{
private:
    static void glow_player(DWORD mObj, float r, float g, float b)
    {
        memory.Write<float>(mObj + 0x4, r);
        memory.Write<float>(mObj + 0x8, g);
        memory.Write<float>(mObj + 0xC, b);
        memory.Write<float>(mObj + 0x10, 1.0f);
        memory.Write<BOOL>(mObj + 0x24, true);
        memory.Write<BOOL>(mObj + 0x25, false);
    }

    static float SanitizeColor(int value)
    {
        if (value > 255) value = 255;
        if (value < 0) value = 0;
        return (float)value / 255;
    }
public:
    static void start_engine() {
        while (!memory.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {
            Sleep(100);
        }
        do {
            Sleep(1000);
            offset::get_offset(&memory);
        } while (dwLocalPlayer < 65535);
        CreateThread(NULL, NULL, &offset::scan_offsets, NULL, NULL, NULL);
    }

    static unsigned long __stdcall esp_thread(void*)
    {
        int objectCount;
        DWORD pointerToGlow;
        Entity* Player = NULL;
        float Friend = SanitizeColor(100);
        float Enemy = SanitizeColor(140);

        while (true)
        {
            Sleep(1);
            pointerToGlow = memory.Read<DWORD>(GetClientModule()->dwBase + dwGlow);
            objectCount = memory.Read<DWORD>(GetClientModule()->dwBase + dwGlow + 0x4);
            if (pointerToGlow != NULL && objectCount > 0)
            {
                for (int i = 0; i < objectCount; i++)
                {
                    DWORD mObj = pointerToGlow + i * sizeof(glow_t);
                    glow_t glowObject = memory.Read<glow_t>(mObj);
                    Player = GetEntityByBase(glowObject.dwBase);

                    if (glowObject.dwBase == NULL || Player == nullptr || Player->is_dormant) {
                        continue;
                    }
                    if (me.team == Player->team) {
                        glow_player(mObj, 0, 0, Friend);
                    }
                    else {
                        glow_player(mObj, Enemy, 0, 0);
                    }
                }
            }
        }

        return EXIT_SUCCESS;
    }
};

int main()
{
    SetConsoleTitle("GlowESP by (Your credentionals)");
    bool enabled = false;
    HANDLE ESP = NULL;

    virtualesp::start_engine();


    std::cout << "Game found, starting GlowESP!" << std::endl;
    Sleep(400);
    std::cout << "Press F1 to toggle GlowESP." << std::endl;
    while (TRUE)
    {
        Sleep(100);
        if (GetAsyncKeyState(VK_F1) & 1) {
            enabled = !enabled;
            if (enabled) {
                std::cout << "Glow: Enabled" << std::endl;
                ESP = CreateThread(NULL, NULL, &virtualesp::esp_thread, NULL, NULL, NULL);
            }
            else {
                std::cout << "Glow: Disabled" << std::endl;
                TerminateThread(ESP, 0);
                CloseHandle(ESP);
            }
        }
    }
}

Шаг 4. Компиляция Вашего чита. (последний шаг)
Вот мы и подошли к последнему шагу! После того как вы всё сделали нажимаете F5, или "Отладка > Начать отладку". Вот и всё! Поздравляю вас вы сделали свой чит! А теперь немного информации об этом.

Помните, что оффсеты обновлять не нужно, чит сам ищет их и обновляет. Чит обновлён под Panorama UI. Если вы не хотите этого, то просто замените везде "client_panorama.dll" на "client.dll" Если вы копировали код в точности и ничего не изменяли, то в 340 строке можно написать например свой ник. Тоесть автора, создателя этого чита. Чит можно включать и выключать на кнопку F1. Чит желательно запускайте от имени администратора, чтобы он хорошо работал. Если когда вы играете с ним у вас мигает GlowESP, то в настройках видео в игре выключите вертикальную синхронизацию и многоядерную обработку. Ну, а так всё! В следующий раз я вам покажу как обновлять чит, и делать так, чтобы он был UnDetected, без всяких протекторов.
P. S. Вот сто пудов уверен после того, как я ещё выпущу гайд как обновлять чит, и делать его UnDetected, то появится OVE9000 групп ВК, и сайтов на бесплатных хостингах, с корявым дизайном, "ПРИВАТНЫЙ GlowESP С ОБНОВЛЕНИЕМ ОФФСЕТОВ, И СТАБИЛЬНЫМ UNDETECTED!1!!" от отбросов общества гейминга. Это всё, что я вам хотел сказать! До всречи в следующих гайдах!

© 2018 Valve Corporation. Все права защищены. Все торговые марки являются собственностью соответствующих владельцев в США и других странах.
 
Продавец
Статус
Оффлайн
Регистрация
26 Сен 2017
Сообщения
632
Реакции[?]
176
Поинты[?]
1K
© 2018 Valve Corporation. Все права защищены. Все торговые марки являются собственностью соответствующих владельцев в США и других странах.
блятб валв делают гайды по созданию читов
 
masta copypasta
Участник
Статус
Оффлайн
Регистрация
2 Июн 2017
Сообщения
683
Реакции[?]
253
Поинты[?]
0
Нахуя тебе директ сдк если оно не требуется?
 
Эксперт
Статус
Оффлайн
Регистрация
31 Мар 2017
Сообщения
997
Реакции[?]
652
Поинты[?]
0
P. S. Вот сто пудов уверен после того, как я ещё выпущу гайд как обновлять чит, и делать его UnDetected, то появится OVE9000 групп ВК, и сайтов на бесплатных хостингах, с корявым дизайном, "ПРИВАТНЫЙ GlowESP С ОБНОВЛЕНИЕМ ОФФСЕТОВ, И СТАБИЛЬНЫМ UNDETECTED!1!!" от отбросов общества гейминга.
Не обольщайся, деф смеф дольше ud чем это :^
 
Забаненный
Статус
Оффлайн
Регистрация
20 Июл 2018
Сообщения
190
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эта игра мертва, если чит в 100 строк кода работает))
 
Забаненный
Статус
Оффлайн
Регистрация
29 Авг 2017
Сообщения
370
Реакции[?]
127
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2017
Сообщения
102
Реакции[?]
10
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
external lover
Пользователь
Статус
Оффлайн
Регистрация
19 Фев 2018
Сообщения
267
Реакции[?]
43
Поинты[?]
6K
Встроенным инжектором? Я слишком ленив чтобы читать всё, но кажется твои многомесячные поиски сурсов онли вх тебя мало чему научили. К тому же какая-то бесполезная инфа по ходу действий. Плюс без протектора чит может отлететь даже с VM_READ, хоть ты его полностью джанком забей. Я не против обсудить это в лс.
 
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2017
Сообщения
102
Реакции[?]
10
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Встроенным инжектором? Я слишком ленив чтобы читать всё, но кажется твои многомесячные поиски сурсов онли вх тебя мало чему научили. К тому же какая-то бесполезная инфа по ходу действий. Плюс без протектора чит может отлететь даже с VM_READ, хоть ты его полностью джанком забей. Я не против обсудить это в лс.
А ты не подумал например, что люди не хотят ебатся с интернал читами? Может быть они просто вх хотят без геммороя? Не подумал? Насчёт протектора скажу, да. А вот джанк это всё хуйня по мнению умных людей. Я так тоже думаю джанк бесполезен. Сам лично сверял версии с джанком и без. В sig bench. И результат был нулевым. Тоесть не отличается.
 
Пользователь
Статус
Оффлайн
Регистрация
10 Фев 2017
Сообщения
195
Реакции[?]
42
Поинты[?]
0
P. S. Вот сто пудов уверен после того, как я ещё выпущу гайд как обновлять чит, и делать его UnDetected, то появится OVE9000 групп ВК, и сайтов на бесплатных хостингах, с корявым дизайном, "ПРИВАТНЫЙ GlowESP С ОБНОВЛЕНИЕМ ОФФСЕТОВ, И СТАБИЛЬНЫМ UNDETECTED!1!!" от отбросов общества гейминга.
У меня на почте реклама с GlowESP (Не с этой темы, но факт) Наверное даже кто-то покупает...
 
Пользователь
Статус
Оффлайн
Регистрация
10 Фев 2017
Сообщения
195
Реакции[?]
42
Поинты[?]
0
Пастил пасту, да не спастил, подскажите как фиксить, пжлста =)

Что-то гуглил, что-то создавал, но не помогло. :pensive:
 
Начинающий
Статус
Оффлайн
Регистрация
7 Фев 2019
Сообщения
7
Реакции[?]
4
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
24 Окт 2017
Сообщения
52
Реакции[?]
6
Поинты[?]
0
Как поменять цвет союзников? Когда меняю цвет союзников, то меняется цвет и врагов.
 
Сверху Снизу