Гайд Создаем свой первый CSGO чит

Начинающий
Статус
Оффлайн
Регистрация
20 Дек 2018
Сообщения
8
Реакции[?]
0
Поинты[?]
0
Где в CHeat Engine найти эти коды которые в конце?
const DWORD dwLocalPlayer = 0xCBD6A4;
const DWORD dwEntityList = 0x4CCDCBC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA3F8;
const DWORD dwGlowObjectManager = 0x520DAE0;
 
Начинающий
Статус
Оффлайн
Регистрация
29 Сен 2018
Сообщения
70
Реакции[?]
3
Поинты[?]
0
Привет, сегодня мы создадим наш первый External-чит для ксго. Создавать мы будем вх, так как вх - идеален, чтобы рассматривать его как основу. Я постараюсь расписать все максимально понятно и по шагам, чтобы вы поняли как что работает, а не просто спастили код и ничему не научились.
Итак, приступим.
1. Создаем простой C++ проект в Visual Studio.
2. Создаем файл main.cpp, здесь и будет весь наш код.
3. Пишем в начало файла следующий код:
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <thread>
здесь мы подключили нужные библиотеки для работы, если у вас какой-то нет, то скачайте или подключите через параметры проекта (можете посмотреть в интернете уроки, если не знаете, как это делать, их полно).
4. Теперь самое время сделать переменные с оффсетами. Почему именно переменные? Да потому что их легко обновлять, и не нужно лазить по всему коду и вспоминать, какой оффсет для чего и где.
C++:
const DWORD dwLocalPlayer = 0xCBD6A4;
const DWORD dwEntityList = 0x4CCDCBC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA3F8;
const DWORD dwGlowObjectManager = 0x520DAE0;
разберем каждое ключевое слово в коде:
const - мы делаем именно константы (не переменные), чтобы им нельзя было присвоить другие значения, кроме тех, которые мы уже задали.
DWORD - класс. Переменные имеют тип экземляра именно класса DWORD.
5. Сейчас мы определим переменные, с которыми мы будем работать на протяжении всего написания чита.
C++:
HANDLE process; // непосредственно сам процесс CSGO
DWORD clientBase; // клиентская часть
DWORD engineBase; // игровая часть (движок)
Мы объявили необходимые переменные, комментарии, обозначающие "что зачем и почему" я написал в самом коде.
6. Что же, теперь приступим к написанию нашего чита непосредственно.
Первое, что нам нужно - это возможность включать или выключать те или иные функции (в нашем случае - вх).
Если вы подумали о переменной типа boolean, определяющей статус функции - вы правы.
C++:
bool wh = false;
Мы объявили переменную, которая определяет статус функции, по умолчание вх выключено, значит значение переменной false.
7. Так как мы создаем External-чит, нам нужно читать память и изменять ее.
Добавим следующий код, необходимый нашему читу. Что и зачем расскажу по ходу дела.
C++:
DWORD getModuleBaseAddress(DWORD pid, const char* name)
{
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
    MODULEENTRY32 mEntry;
    mEntry.dwSize = sizeof(MODULEENTRY32);
    do
    {
        if (!strcmp(mEntry.szModule, name))
        {
            CloseHandle(snapshot);
            return (DWORD)mEntry.modBaseAddr;
        }
    } while (Module32Next(snapshot, &mEntry));
}
данный код находит в нашей оперативной памяти именно то приложение, которое нам нужно (по его id - pid, который передается функции).
C++:
template <typename T>
T readMem(DWORD address)
{
    T buffer;
    ReadProcessMemory(process, (LPVOID)address, &buffer, sizeof(buffer), 0);
    return buffer;
}

template <typename T>
void writeMem(DWORD address, T value)
{
    WriteProcessMemory(process, (LPVOID)address, &value, sizeof(value), 0);
}
эти стандартные функции читают и пишут память, именно с помощью них мы будем взаимодействовать с игрой.
8. Теперь создадим входную точку, без которой не будет работать ни одно приложение C++. Это int main().
C++:
int main() {

    SetConsoleTitle("Top non-pasted shit 1337"); // устанавливаем заголовок нашей консоли
 
    std::cout << "Open CS:GO\n"; // выводим в консоль сообщение о том, что надо открыть ксго
 
    HWND hwnd;
 
        do {
            hwnd = FindWindowA(0, "Counter-Strike: Global Offensive"); // ищем ксго, если находим - выходим из цикла
            Sleep(50); // таймаут (чтобы не грузить процессор)
        } while (!hwnd);

        DWORD pid;
        GetWindowThreadProcessId(hwnd, &pid); // получаем id приложения
        process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // заходим в кс го его id

        std::cout << "Csgo started, pid " << pid << ".\n"; // выводим сообщение о том, что ксго запущена

        do {
            clientBase = getModuleBaseAddress(pid, "client_panorama.dll"); // ищем клиент кс го
            Sleep(50);
        } while (!clientBase);

        do {
            engineBase = getModuleBaseAddress(pid, "engine.dll"); // ищем движок кс го
            Sleep(50);
        } while (!engineBase);

}
весь код с комментариями, его нам еще придется обновлять. Что мы в нем сделали? Мы нашли ксго, интегрировали чит с игрой, получили необходимые базы (клиент и движок).
9. Теперь пора создать сам вх. Создадим метод (пусть будет wallhack())
C++:
void wallhack()
{
    while (true) // создаем бесконечный цикл
    {
        Sleep(10); // таймаут 10 мс, чтобы не грузить процессор под 100
        if (!wallhack && !readMem<DWORD>(readMem<DWORD>(clientBase + dwLocalPlayer) + 0xED)) // если вх выключено или не удается прочитать память - выходим из цикла
            continue;

        DWORD glowObj = readMem<DWORD>(clientBase + dwGlowObjectManager); // создаем объект glowObj из модельки игрока
        DWORD myTeam = readMem<DWORD>(readMem<DWORD>(clientBase + dwLocalPlayer) + m_iTeamNum); // создаем объект тиммейтов

        for (int x = 0; x < 32; x++) // сам вх
        {
            DWORD player = readMem<DWORD>(clientBase + dwEntityList + x * 0x10); // обычный игрок
            if (player == 0)
                continue;

            bool dormant = readMem<bool>(player + 0xED); // спектатор
            if (dormant)
                continue;

            DWORD team = readMem<DWORD>(player + m_iTeamNum); // тиммейт
            if (team != 2 && team != 3)
                continue;

            DWORD currentGlowIndex = readMem<DWORD>(player + m_iGlowIndex); // текущий индекс игрока

            if (team != myTeam) // если игрок не тиммейт
            {
                // делаем его обводку красным
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x4, 255); // red
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x8, 0); // green
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0xC, 0); // blue
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x10, 255);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x24, true);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x25, false);
            }
            else // если игрок тиммейт
            {
                // делаем его обводку синим
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x4, 0); // red
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x8, 0); // green
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0xC, 255); // blue
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x10, 255);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x24, true);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x25, false);
            }
        }
    }
}
10. Теперь нам нужно где-то вызывать наш метод. Конечно же в main()!
Теперь вызовем наш метод:
std::thread whThread(wallhack)
И создадим в нашем главном методе бесконечный цикл.
Код:
while(true)
{

    if (GetAsyncKeyState(VK_F9)) // если нажали f9
    {
 
        wh = !wh; // заменяем значение переменной на противоположное
        if (wh)
            std::cout("wh: on\n"); // если wallhack - true, то пишем, что вх включен
        else
            std::cout("wh: off\n"); // иначе пишем, что вх выключен
         
        Sleep(100); // таймаут, чтобы сбросить нагрузку
 
    }

}
Вроде все, спасибо за внимание :roflanPominki::roflanEbalo:
А может заместо писания каждего цвета целиком Структуру писать со всеми изменениями?
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,791
Реакции[?]
1,073
Поинты[?]
29K
Начинающий
Статус
Оффлайн
Регистрация
29 Сен 2018
Сообщения
70
Реакции[?]
3
Поинты[?]
0
GlowColor Entglow;
struct GlowColor
{

float red;
float green;
float blue;
float alpha=1.f;
byte Padd[8]; // pad
float buffer3;
int buffer4;
bool on;


};
структура потом

функция под её измен
void SetColor(float r,float g, float b)
{
Entglow.red=r;
Entglow.green=g;
Entglow.blue=b;

}
потом
if(myteam != enemyteam)
{
SetColor(1.f,0.f,0.f)
}
else
{
SetColor(0.f,1.f,0.f)
}
Потом просто пишешь эту структуру по адрессу и всё изи!
Но гайд норм)))))))
Я бы лучше сделал но всё же
 
Начинающий
Статус
Оффлайн
Регистрация
29 Сен 2018
Сообщения
70
Реакции[?]
3
Поинты[?]
0
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,791
Реакции[?]
1,073
Поинты[?]
29K
GlowColor Entglow;
struct GlowColor
{

float red;
float green;
float blue;
float alpha=1.f;
byte Padd[8]; // pad
float buffer3;
int buffer4;
bool on;


};
структура потом

функция под её измен
void SetColor(float r,float g, float b)
{
Entglow.red=r;
Entglow.green=g;
Entglow.blue=b;

}
потом
if(myteam != enemyteam)
{
SetColor(1.f,0.f,0.f)
}
else
{
SetColor(0.f,1.f,0.f)
}
Потом просто пишешь эту структуру по адрессу и всё изи!
Но гайд норм)))))))
Я бы лучше сделал но всё же
Да, кстати, структура уже давно не такая
 
Начинающий
Статус
Оффлайн
Регистрация
29 Сен 2018
Сообщения
70
Реакции[?]
3
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
14 Дек 2018
Сообщения
35
Реакции[?]
0
Поинты[?]
0
Где в CHeat Engine найти эти коды которые в конце?
const DWORD dwLocalPlayer = 0xCBD6A4;
const DWORD dwEntityList = 0x4CCDCBC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA3F8;
const DWORD dwGlowObjectManager = 0x520DAE0;
Cheat Engine?) Really?)) :roflanEbalo:
 
Начинающий
Статус
Оффлайн
Регистрация
14 Дек 2018
Сообщения
35
Реакции[?]
0
Поинты[?]
0
Понимаю, что не в тему, но вдруг кто сталкивался - лабораторная работа (проект) в вс 17 выдаёт ошибку, у которой нет описания. Ну вроде как бы и ошибки нет, но она есть. Домой приеду через пару недель, могу приложить скрин. Если кто сталкивался - шо делат
 
Начинающий
Статус
Оффлайн
Регистрация
29 Сен 2018
Сообщения
70
Реакции[?]
3
Поинты[?]
0
error
Начинающий
Статус
Оффлайн
Регистрация
28 Июн 2017
Сообщения
97
Реакции[?]
25
Поинты[?]
0
Интернел не изпользет какие либо внешние модули в плане panorama_server.dll(Хуй знает забыл)
и не берётся хэндл процесса
Пфф... Там вообще изи... В DllMain создаёшь поток, и в потоке кароч пишешь код с туториала, также write и read procces memory и тд..(it's rofl my bro)
 
eblan
Начинающий
Статус
Оффлайн
Регистрация
30 Окт 2017
Сообщения
43
Реакции[?]
4
Поинты[?]
0
Пфф... Там вообще изи... В DllMain создаёшь поток, и в потоке кароч пишешь код с туториала, также write и read procces memory и тд..(it's rofl my bro)
Уже понял) Появилась проблема с хуком, больше не рендерит если я на сервере
 
Начинающий
Статус
Оффлайн
Регистрация
3 Май 2019
Сообщения
79
Реакции[?]
4
Поинты[?]
0
DWORD clientBase; // клиентская часть
DWORD engineBase; // игровая часть (движок) что нужно писать в русские слова?
 
Забаненный
Статус
Оффлайн
Регистрация
9 Янв 2019
Сообщения
701
Реакции[?]
295
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
DWORD clientBase; // клиентская часть
DWORD engineBase; // игровая часть (движок) что нужно писать в русские слова?
это комментарии, там не нужно ничего заменять, мы их просто инициализировали
 
Забаненный
Статус
Оффлайн
Регистрация
9 Янв 2019
Сообщения
701
Реакции[?]
295
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

признавайтесь, что за хуила это запостила на uc без кредитов на меня?
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,791
Реакции[?]
1,073
Поинты[?]
29K
C++:
HANDLE process; // непосредственно сам процесс CSGO
DWORD clientBase; // клиентская часть
DWORD engineBase; // игровая часть (движок)
бля вот ты тему апнул и мне интересно стало, а движок(engineBase) - эт не клиентская часть чтоли? на сервере его код выполняется чтоли? или может у друга на компе? вообще всегда делилось все на client/server-side, про игровую часть слышу впервые внимание спасибо за внимание
 
Начинающий
Статус
Оффлайн
Регистрация
14 Дек 2018
Сообщения
126
Реакции[?]
13
Поинты[?]
0
мне интересно я один такой челик который заходит на все гайды по программированию или написанию кода
прочитываю все комменты и сам гайд) оч интересно но нихуя не понимаю ибо я не проггер:CoolStoryBob:
 
Сверху Снизу