WH для CS:GO 2019!

Нужен гайд по созданию Aim/RadarHack/Trigger?

  • Да

    Голосов: 52 98.1%
  • Нет

    Голосов: 1 1.9%

  • Всего проголосовало
    53
Начинающий
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
6
Реакции[?]
4
Поинты[?]
0
Всем привет, сегодня я покажу вам как сделать самый простой wallhack для cs:go!
Итак, что нам для начала нужно:
1) Visual Studio
2) Не буду банален, напишу не руки, а мозг.
1. Для начала создаем пустой проект в VS:
Нажимаем ОК.
2. Создаем заголовочный файл с названием Memory и расширением h (Memory.h)
3. Начать писать код! :)
3.1 Подключаем библиотеки.
C++:
#include <Windows.h>
#include <TlHelp32.h>
#include <comdef.h>
3.2 Создаем структуру. (Даем dwBase!, dwSize)
C++:
struct PModule {
    DWORD dwBase;
    DWORD dwSize;
};
3.3 BOOOM - Создаем основной класс.
Код:
class memory {
public:
    inline bool Attach(const char* pName, DWORD dwAccess) {
        HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
     
        PROCESSENTRY32 entry;
        entry.dwSize = sizeof(entry);

        do
            if (!strcmp(_bstr_t(entry.szExeFile), pName)) {
                _pId = entry.th32ProcessID;
                CloseHandle(handle);
                _process = OpenProcess(dwAccess, false, _pId);
                return true;
            }
        while (Process32Next(handle, &entry));
        return false;
    }
 
    inline PModule GetModule(const char* pModule) {
        HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, _pId);
        MODULEENTRY32 entry;
        entry.dwSize = sizeof(entry);

        do
            if (!strcmp(_bstr_t(entry.szModule), pModule)) {
                CloseHandle(module);
                return PModule{
                    reinterpret_cast<DWORD>(entry.hModule), entry.modBaseSize
                };
            }
        while (Module32Next(module, &entry));

        return PModule{ 0,0 };
    }
    template<class T>
    T Read(const DWORD dwAddress) {
        T _read;
        ReadProcessMemory(_process, LPVOID(dwAddress), &_read, sizeof(T), NULL);
        return _read;
    }
    template<class T>
    void Write(const DWORD dwAddress, const T value) {
        WriteProcessMemory(_process, LPVOID(dwAddress), &value, sizeof(T), NULL);
    }

    void Exit() {
        CloseHandle(_process);
    }
private:
    HANDLE _process;
    DWORD _pId;
};
Советую просто копипастить, если не шарите в плюсах. Тут на самом деле простецкий код, а обьяснять долго.
4. Создаем исходник (Исходний файл)
Итак, тут самое интересное, время подключать адреса.
Есть два выхода, 1 - csgo dumper(плохой выход)
2 -
Пожалуйста, авторизуйтесь для просмотра ссылки.
(github)
Я советую юзать адреса на гитхаб, так как там есть все что нужно(в отличии от csgo dumper) + по кд обновляют.
4.1 Кодим :)
Подключаем библиотеки и наш файл.
C++:
#define _CRT_SECURE_NO_WARNINGS

#include <cstdint>
#include <iostream>

#include "Memory.h"

using namespace std;
Создаем идентификаторы и вставляем туда НОВЫЕ ЗНАЧЕНИЯ С ГИТХАБА!(т.к кс будет обновлятся после данного гайда)
C++:
#define dwLocalPlayer     0xCD2764
#define dwEntityList      0x4CE34FC
#define dwGlowObject      0x5223740

#define m_iTeamNum        0xF4
#define m_iHealth         0x100
#define m_iGlowIndex      0xA3F8
Так же первые 12 строчек кода кс предоставила нам на подносе, чтобы нам было намного легче делать наше wh(glow esp), так же подключаем mem и bClient.
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;

memory mem;
PModule bClient;
И основное действие.
C++:
int main() {
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    bClient = mem.GetModule("client_panorama.dll");

    cout << "Glow started..." << endl;

    while (1) {
        DWORD playerBase = mem.Read<DWORD>(bClient.dwBase + dwLocalPlayer);
        if (!playerBase)
            continue;

        int playerHp = mem.Read<int>(playerBase + m_iHealth);
        if (!playerHp)
            continue;

        int playerTeam = mem.Read<int>(playerBase + m_iTeamNum);

        int glowArray = mem.Read<int>(bClient.dwBase + dwGlowObject);
        int glowCount = mem.Read<int>(bClient.dwBase + dwGlowObject + 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 entTeam = mem.Read<int>(gEntity + m_iTeamNum);

            if (entTeam == playerTeam)
                continue;

            static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);

            if (entTeam == 3) {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.866666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
            if (entTeam == 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;
}
Здесь все просто, в строчках
C++:
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}

    bClient = mem.GetModule("client_panorama.dll");
Мы сначала передаем процесс, а потом dll игры(кста dll лучше смотреть в csgo dumper, так как после панорамы client.dll сменилась на client_panorama.dll)
1552937786940.png
Ну а дальше все по "дефолту", как в обычном Wh.
Итак, что мы получаем? А мы получаем wh как в кс при наблюдателе, да и урон по человеку в подарок!
1552938223709.png
Все отлично работает :)!
Для ленивых вот код полностью:

Memory.h

C++:
#pragma once
#include <Windows.h>
#include <TlHelp32.h>
#include <comdef.h>

struct PModule {
    DWORD dwBase;
    DWORD dwSize;
};

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

        do
            if (!strcmp(_bstr_t(entry.szExeFile), pName)) {
                _pId = entry.th32ProcessID;
                CloseHandle(handle);
                _process = OpenProcess(dwAccess, false, _pId);
                return true;
            }
        while (Process32Next(handle, &entry));
        return false;
    }
 
    inline PModule GetModule(const char* pModule) {
        HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, _pId);
        MODULEENTRY32 entry;
        entry.dwSize = sizeof(entry);

        do
            if (!strcmp(_bstr_t(entry.szModule), pModule)) {
                CloseHandle(module);
                return PModule{
                    reinterpret_cast<DWORD>(entry.hModule), entry.modBaseSize
                };
            }
        while (Module32Next(module, &entry));

        return PModule{ 0,0 };
    }
    template<class T>
    T Read(const DWORD dwAddress) {
        T _read;
        ReadProcessMemory(_process, LPVOID(dwAddress), &_read, sizeof(T), NULL);
        return _read;
    }
    template<class T>
    void Write(const DWORD dwAddress, const T value) {
        WriteProcessMemory(_process, LPVOID(dwAddress), &value, sizeof(T), NULL);
    }

    void Exit() {
        CloseHandle(_process);
    }
private:
    HANDLE _process;
    DWORD _pId;
};

Wh.cpp


C++:
#define _CRT_SECURE_NO_WARNINGS

#include <cstdint>
#include <iostream>

#include "Memory.h"

using namespace std;

#define dwLocalPlayer     0xCD2764
#define dwEntityList      0x4CE34FC
#define dwGlowObject      0x5223740

#define m_iTeamNum        0xF4
#define m_iHealth         0x100
#define m_iGlowIndex      0xA3F8

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;

memory mem;
PModule bClient;

int main() {
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    bClient = mem.GetModule("client_panorama.dll");

    cout << "Glow started..." << endl;

    while (1) {
        DWORD playerBase = mem.Read<DWORD>(bClient.dwBase + dwLocalPlayer);
        if (!playerBase)
            continue;

        int playerHp = mem.Read<int>(playerBase + m_iHealth);
        if (!playerHp)
            continue;

        int playerTeam = mem.Read<int>(playerBase + m_iTeamNum);

        int glowArray = mem.Read<int>(bClient.dwBase + dwGlowObject);
        int glowCount = mem.Read<int>(bClient.dwBase + dwGlowObject + 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 entTeam = mem.Read<int>(gEntity + m_iTeamNum);

            if (entTeam == playerTeam)
                continue;

            static GlowObjectDefinition_t Glow = mem.Read<GlowObjectDefinition_t>(glowArray + (i * 0x38) + 0x4);

            if (entTeam == 3) {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.866666667f;
                Glow.a = 0.5f;
                Glow.m_bRenderWhenOccluded = true;
                Glow.m_bRenderWhenUnoccluded = false;
            }
            if (entTeam == 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;
}
И для самых ленивых ссылка на готовый чит:
Y.Disk -
Пожалуйста, авторизуйтесь для просмотра ссылки.

VT -
Пожалуйста, авторизуйтесь для просмотра ссылки.
(1/70)
Да и на последок - СПАСИБО ЗА ВНИМАНИЕ!
 
Последнее редактирование:
そしてなぜあなたはそれを翻訳したのですか?
Начинающий
Статус
Оффлайн
Регистрация
11 Янв 2019
Сообщения
139
Реакции[?]
29
Поинты[?]
0
Весьма познавательная статья. Простое и доступное обучение.
 
Victory is not everything
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2018
Сообщения
219
Реакции[?]
30
Поинты[?]
7K
Не удивлюсь если будет "НОВЫЙ СУПЕР ЧИТ:fearscream: ВХ БЕЗ ВАКА:wink:"
 
Я ебал "приватные" (фри) софты
Пользователь
Статус
Оффлайн
Регистрация
22 Мар 2019
Сообщения
113
Реакции[?]
66
Поинты[?]
0
tg: yg_fidel
Начинающий
Статус
Оффлайн
Регистрация
16 Янв 2019
Сообщения
155
Реакции[?]
21
Поинты[?]
0
Весьма познавательная статья. Простое и доступное обучение.
Это не обучение, это копи паста. Ведь тот кто в плюсах не шарит их лучше понимать не начнет.
 
Paste for live <3
Забаненный
Статус
Оффлайн
Регистрация
1 Мар 2019
Сообщения
309
Реакции[?]
47
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Когда по чит функционалу вышло почти ВСЁ.
Люди начнут делать экстернал ВХ
 
press f to suck dick
Начинающий
Статус
Оффлайн
Регистрация
12 Янв 2019
Сообщения
146
Реакции[?]
24
Поинты[?]
0
как я понимаю, в подарок к ВХ идёт вак или антрастед? Или протект поможет?
 
-_-
Забаненный
Статус
Оффлайн
Регистрация
19 Дек 2018
Сообщения
375
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Остался только протект. Я так думаю) Вак интересно через сколько прилетит?
 
hvh legend
Забаненный
Статус
Оффлайн
Регистрация
23 Фев 2019
Сообщения
356
Реакции[?]
103
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня visual какой-то кривой не распознает команды memory,Pmodule и другие даже обучиться нельзя когда делаю какую либо программу она работает не корректно.
 
сдерживаю выходящее наружу зло
Пользователь
Статус
Оффлайн
Регистрация
25 Ноя 2018
Сообщения
503
Реакции[?]
104
Поинты[?]
1K
-_-
Забаненный
Статус
Оффлайн
Регистрация
19 Дек 2018
Сообщения
375
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Давай теперь аим.
 
Сверху Снизу