Что нового
Теневой форум

Добро пожаловать на FSELL- крупнейший теневой форум. У нас Вы сможете найти огромное количество заработка в интернете, купить паспорт, ксиву, оружие, куча многих товаров и услуг, в виде пробива, взлома, нанять киллера. Все это Вы найдете на нашем форуме! Не пренебрегайте услугами Гарант-Сервиса, это убережет Вас от мошенников.

[Source] Пишем простой Radar Hack для CS:GO

iExploit

%USERNAME%
Продвинутый
Авторская статья. Сейчас будем учиться кодить самый простой External RadarHack С++.

Создаем пустой проект, и создаем там два элемента: Memory.h, Main.cpp

Заходим в Memory.h и вставляем туда код чтения и записи процесса (Объяснять не буду, никто не поймет))).
Код:
#pragma once
#include <windows.h>
#include <TlHelp32.h>
#include <iostream>

struct PModule
{
    DWORD dwBase;
    DWORD dwSize;
};

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);
    }
};

Далее заходим в Main.cpp и прописываем туда инклуды:
Код:
#include <iostream>
#include <Windows.h>
#include "memory.h"

Дальше пишем оффсеты EntityList и dwSpotted. Если этот Radar Hack перестал работать, то вам стоит обновить эти два оффсета. Актуальные оффсеты - https://github.com/frk1/hazedumper/blob/master/csgo.cs
Код:
DWORD dwEntityList = 0x4C3B384;
DWORD dwSpotted = 0x939;
Определяем class process и struct PModule
Код:
process memory;
PModule modClient;

Создаем функцию получения client_panorama.dll (Если на момент выхода темы ее изменили, то поставьте client.dll)
Код:
PModule* GetClientModule() {
    if (modClient.dwBase == 0 && modClient.dwSize == 0) {
        modClient = memory.GetModule("client_panorama.dll");
    }
    return &modClient;
}

Создаем функцию main
Код:
int main()
{
    return 0;
}

Дальше создаем основные циклы:
Код:
  while (true)
    {
        memory.Attach("csgo.exe", PROCESS_ALL_ACCESS);
        for (int i = 1; i <= 64; i++)
        {
            DWORD dwEnemy = memory.Read<DWORD>((GetClientModule()->dwBase + dwEntityList) + i * 0x10);
            memory.Write<int>(dwEnemy + dwSpotted, 1);
            Sleep(1);
        }
        Sleep(1);
    }
Собственно, как работает этот Radar Hack? Он изменяет значение оффсета dwSpotted (замечен противник или нет) на true (1), и теперь радар показывает всех противников, хоть они и за стеной.

Полный код Main.cpp для
ErnfSdq.png


[LIKES=5]
Код:
#include <iostream>
#include <Windows.h>
#include "memory.h"

DWORD dwEntityList = 0x4C3B384;
DWORD dwSpotted = 0x939;
process memory;
PModule modClient;

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

int main()
{
    while (true)
    {
        memory.Attach("csgo.exe", PROCESS_ALL_ACCESS);
        for (int i = 1; i <= 64; i++)
        {
            DWORD dwEnemy = memory.Read<DWORD>((GetClientModule()->dwBase + dwEntityList) + i * 0x10);
            memory.Write<int>(dwEnemy + dwSpotted, 1);
            Sleep(1);
        }
        Sleep(1);
    }
    return 0;
}
[/LIKES]
wmBMFSn.jpg
 
Последнее редактирование:
Вверх