• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

WH для CS:GO 2019!

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

  • Да

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

    Голосов: 1 1.9%

  • Всего проголосовало
    53
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
6
Реакции
4
Всем привет, сегодня я покажу вам как сделать самый простой wallhack для cs:go!
Итак, что нам для начала нужно:
1) Visual Studio
2) Не буду банален, напишу не руки, а мозг.
1. Для начала создаем пустой проект в VS:
Нажимаем ОК.
2. Создаем заголовочный файл с названием Memory и расширением h (Memory.h)
3. Начать писать код! :)
3.1 Подключаем библиотеки.
C++:
Expand Collapse Copy
#include <Windows.h>
#include <TlHelp32.h>
#include <comdef.h>
3.2 Создаем структуру. (Даем dwBase!, dwSize)
C++:
Expand Collapse Copy
struct PModule {
    DWORD dwBase;
    DWORD dwSize;
};
3.3 BOOOM - Создаем основной класс.
Код:
Expand Collapse Copy
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++:
Expand Collapse Copy
#define _CRT_SECURE_NO_WARNINGS

#include <cstdint>
#include <iostream>

#include "Memory.h"

using namespace std;
Создаем идентификаторы и вставляем туда НОВЫЕ ЗНАЧЕНИЯ С ГИТХАБА!(т.к кс будет обновлятся после данного гайда)
C++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
#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)
Да и на последок - СПАСИБО ЗА ВНИМАНИЕ!
 
Последнее редактирование:
Весьма познавательная статья. Простое и доступное обучение.
 
Не удивлюсь если будет "НОВЫЙ СУПЕР ЧИТ:fearscream: ВХ БЕЗ ВАКА:wink:"
 
За него банит?xd
 
Весьма познавательная статья. Простое и доступное обучение.
Это не обучение, это копи паста. Ведь тот кто в плюсах не шарит их лучше понимать не начнет.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Когда по чит функционалу вышло почти ВСЁ.
Люди начнут делать экстернал ВХ
 
как я понимаю, в подарок к ВХ идёт вак или антрастед? Или протект поможет?
 
Вот и ав не нужно)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Остался только протект. Я так думаю) Вак интересно через сколько прилетит?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня visual какой-то кривой не распознает команды memory,Pmodule и другие даже обучиться нельзя когда делаю какую либо программу она работает не корректно.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Давай теперь аим.
 
Назад
Сверху Снизу