Вопрос Как сделать external wh?

Начинающий
Статус
Оффлайн
Регистрация
11 Июн 2021
Сообщения
40
Реакции[?]
4
Поинты[?]
0
Либо относительно старые читы больше не воркают (2020 год), либо я дурак и неправильно копирую код. Пиздил с 2-3 разных тем, но ничего не работает. В чем проблема, мб сейчас в кске чет изменили.
 
Начинающий
Статус
Оффлайн
Регистрация
11 Июн 2021
Сообщения
40
Реакции[?]
4
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
33
Поинты[?]
4K
Либо относительно старые читы больше не воркают (2020 год), либо я дурак и неправильно копирую код. Пиздил с 2-3 разных тем, но ничего не работает. В чем проблема, мб сейчас в кске чет изменили.
На каком языке пишешь Glow? Я могу сделать по фасту на C++ и на AHK, выбирай на каком нужно, скину
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
33
Поинты[?]
4K
Буду очень благодарен, если получится
Не забудь втыкнуть в свойствах проекта многобайтовую кодировку и поставь Release x64.

Я тебе скинул логику, ты переделай под себя, не переделаешь схлопочешь VAC.

C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <thread>
#include <chrono>

using namespace std;
using namespace std::chrono;
using namespace std::this_thread;

DWORD dwLocalPlayer = 0xDA746C;
DWORD dwEntityList = 0x4DC178C;
DWORD dwGlowObjectManager = 0x5309C90;
DWORD m_iGlowIndex = 0x10488;
DWORD m_iHealth = 0x100;
DWORD m_bSpotted = 0x93D;
DWORD m_iTeamNum = 0xF4;
DWORD m_bDormant = 0xED;

uintptr_t engine;
DWORD process_id;
uintptr_t client_game;
HWND window_game;
HANDLE hProcess;

uintptr_t GetModuleBaseAddress(const char* modName) {
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, process_id);
    if (hSnap != INVALID_HANDLE_VALUE) {
        MODULEENTRY32 modEntry;
        modEntry.dwSize = sizeof(modEntry);
        if (Module32First(hSnap, &modEntry)) {
            do {
                if (!strcmp(modEntry.szModule, modName)) {
                    CloseHandle(hSnap);
                    return (uintptr_t)modEntry.modBaseAddr;
                }
            } while (Module32Next(hSnap, &modEntry));
        }
    }
}

template<typename T> T RPM(SIZE_T address) {
    T buffer;
    ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);
    return buffer;
}

template<typename T> void WPM(SIZE_T address, T buffer) {
    WriteProcessMemory(hProcess, (LPVOID)address, &buffer, sizeof(buffer), NULL);
}


uintptr_t LocPlay() {
    return RPM<DWORD>(client_game + dwLocalPlayer);
}

int main()
{
    window_game = FindWindowA(NULL, "Counter-Strike: Global Offensive");
    GetWindowThreadProcessId(window_game, &process_id);
    client_game = GetModuleBaseAddress("client.dll");
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, process_id);
    while (1)
    {
        for (int i = 1; i < 64; i++)                                    // 64 - количество игроков
        {
            int GlowManager = RPM<int>(client_game + dwGlowObjectManager);
            int MyTeam = RPM<int>(LocPlay() + m_iTeamNum);
            int Vragi = RPM<int>(client_game + dwEntityList + i * 0x10);
            int EntityTeam = RPM<int>(Vragi + m_iTeamNum);
            int GlowInd = RPM<int>(Vragi + m_iGlowIndex);
            if (EntityTeam == 3 and MyTeam == 2)
            {
                int ss = RPM<int>(GlowManager + (GlowInd * 0x38) + 0x8);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x8, 1.0f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0xC, 0.300000f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x10, 1.0f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x14, 1.0f);
                WPM<bool>(GlowManager + GlowInd * 0x38 + 0x28, true);
                WPM<int>(GlowManager + GlowInd * 0x38 + 0x30, 0);        // 0 - Glow, 1 - Chams, 2 - тоже Chams
            }
            else if (EntityTeam == 2 and MyTeam == 3)
            {
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x8, 0.0f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0xC, 1.0f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x10, 0.900000f);
                WPM<float>(GlowManager + GlowInd * 0x38 + 0x14, 1.0f);
                WPM<bool>(GlowManager + GlowInd * 0x38 + 0x28, true);
                WPM<int>(GlowManager + GlowInd * 0x38 + 0x30, 0);        // 0 - Glow, 1 - Chams, 2 - тоже Chams
            }
            this_thread::sleep_for(chrono::nanoseconds(500000));        // типо Sleep    Sleep(1);
        }
    }
}
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
33
Поинты[?]
4K
Привет , а на ахк можно ?)
Да, конечно. Только тебе нужно запускать это в AutoHotKey ANSII 32-bit. Вот ссылка на мой Skin Changer в котором я объясняю как это сделать - https://yougame.biz/threads/208439/

Сам Glow не идеальный по скорости, делал чтобы была ясна логика, но можно сделать лучше при большом желании.

Сам скрипт:
Код:
#NoEnv
SetBatchLines, -1            ; МАКСИМАЛЬНАЯ СКОРОСТЬ СКРИПТА ( -1 ), НОРМАЛЬНАЯ СКОРОСТЬ СКРИПТА ( 5ms )

;_________________СКАЧИВАЕТ ФАЙЛ С ОФФСЕТАМИ В ПАПКУ TEMP(C:) И УДАЛЯЕТ ЕГО_________________
FileDelete, %A_Temp%/Offsets.ini
UrlDownloadToFile, https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.toml, %A_Temp%/Offsets.ini

;__________________________ЧИТАЕТ ОФФСЕТЫ Hazedumper__________________________
IniRead, dwLocalPlayer, %A_Temp%/Offsets.ini, signatures, dwLocalPlayer
IniRead, dwEntityList, %A_Temp%/Offsets.ini, signatures, dwEntityList
IniRead, dwGlowObjectManager, %A_Temp%/Offsets.ini, signatures, dwGlowObjectManager
IniRead, m_iGlowIndex, %A_Temp%/Offsets.ini, netvars, m_iGlowIndex
IniRead, m_iTeamNum, %A_Temp%/Offsets.ini, netvars, m_iTeamNum
DllName = client.dll
;_____________________________________________________________________________

;__________________________ЗАПИСЫВАЕТ В CFG MAX_PLAYER И All_Glow__________________________
IniRead, MAX_PLAYER, CFG.INI, CFG, МАКСИМАЛЬНОЕ КОЛИЧЕСТВО ИГРОКОВ, 16
IniWrite, %MAX_PLAYER%, CFG.INI, CFG, МАКСИМАЛЬНОЕ КОЛИЧЕСТВО ИГРОКОВ

IniRead, All_Glow, CFG.INI, CFG, ПОДСВЕТКА ВСЕХ ИГРОКОВ, off
IniWrite, %All_Glow%, CFG.INI, CFG, ПОДСВЕТКА ВСЕХ ИГРОКОВ
;__________________________________________________________________________________________


;_________________________ЗАПИСЫВАЕТ В CFG ЦВЕТА ПЕРСОВ И ЯРКОСТЬ__________________________

;                            ТЕРРОРИСТЫ:
IniRead, red_t, CFG.INI, CFG, КРАСНЫЙ ТЕРРОРИСТОВ , 1
IniWrite, %red_t%, CFG.INI, CFG, КРАСНЫЙ ТЕРРОРИСТОВ
IniRead, green_t, CFG.INI, CFG, ЗЕЛЕНЫЙ ТЕРРОРИСТОВ, 0
IniWrite, %green_t%, CFG.INI, CFG, ЗЕЛЕНЫЙ ТЕРРОРИСТОВ
IniRead, blue_t, CFG.INI, CFG, СИНИЙ ТЕРРОРИСТОВ, 0
IniWrite, %blue_t%, CFG.INI, CFG, СИНИЙ ТЕРРОРИСТОВ
IniRead, Alpha_t, CFG.INI, CFG, ЯРКОСТЬ ТЕРРОРИСТОВ, 1
IniWrite, %Alpha_t%, CFG.INI, CFG, ЯРКОСТЬ ТЕРРОРИСТОВ

;                            СПЕЦНАЗ:
IniRead, red_ct, CFG.INI, CFG, КРАСНЫЙ СПЕЦОВ, 0
IniWrite, %red_ct%, CFG.INI, CFG, КРАСНЫЙ СПЕЦОВ
IniRead, green_ct, CFG.INI, CFG, ЗЕЛЕНЫЙ СПЕЦОВ, 0
IniWrite, %green_ct%, CFG.INI, CFG, ЗЕЛЕНЫЙ СПЕЦОВ
IniRead, blue_ct, CFG.INI, CFG, СИНИЙ СПЕЦОВ, 1
IniWrite, %blue_ct%, CFG.INI, CFG, СИНИЙ СПЕЦОВ
IniRead, Alpha_ct, CFG.INI, CFG, ЯРКОСТЬ СПЕЦОВ, 1
IniWrite, %Alpha_ct%, CFG.INI, CFG, ЯРКОСТЬ СПЕЦОВ
;__________________________________________________________________________________________

;____________________________________ПРОВЕРЯЕТ ЗАПУЩЕНА ЛИ ИГРА, ЕСЛИ НЕТ ЗАПУСКАЕТ____________________________________
Loop
{
    Process, Exist, csgo.exe
    PID = %ErrorLevel%
    if (PID = 0)
    {
        Run, steam://rungameid/730
        Process, Wait, csgo.exe, 120
        PID = %ErrorLevel%
        if (PID == 0)
        {
            MsgBox, 48, Трудности с запуском игры..., Попробуй запустить игру вручную`, после чего запусти скрипт!
            ExitApp
        }
    }
    else
    {
        break
    }
}

try_dll := 0

Loop
{
    Client := GetDllBase(DllName, PID)
    if (Client == 0 and try_dll <= 60)
    {
        Sleep 2000
        try_dll++
    }
    else if (Client == 0 and try_dll > 60)
    {
        MsgBox, 48, Не найдена Dll..., Возможно данные хранятся не на client.dll
        ExitApp
    }
    else
    {
        break
    }
}
;______________________________________________________________________________________________________________________

ProcessHandle := DllCall("OpenProcess", "int", 2035711, "char", 0, "UInt", PID, "UInt")

Loop
{
    For i in range(1, MAX_PLAYER)                                                            ; 0 - Я, 1 и больше - остальные! MAX_PLAYER - лимит игроков (чем больше, тем больше багов подсветки)
    {
        LocalGamer := ReadMemory(Client + dwLocalPlayer, PID, ProcessHandle)                ; Я
        EntGamer := ReadMemory(Client + dwEntityList + i * 0x10, PID, ProcessHandle)        ; Все
        GlowIndex := ReadMemory(EntGamer + m_iGlowIndex, PID, ProcessHandle)                ; Индекс подсветки сущностей
        GlowManager := ReadMemory(Client + dwGlowObjectManager, PID, ProcessHandle)            ; Хуита
        MyTeam := ReadMemory(LocalGamer + m_iTeamNum, PID, ProcessHandle)                    ; Моя команда
        EntTeam := ReadMemory(EntGamer + m_iTeamNum, PID, ProcessHandle)                    ; Команда противника
        
        if (All_Glow == "off")                            ; Если подсветка всех игроков выключена - светить противника!
        {
            if (MyTeam == 3 and EntTeam == 2)            ; Если моя команда - специ и вражеская команда - терры
            {
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x8, red_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0xC, green_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x10, blue_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x14, Alpha_t, ProcessHandle)
                WriteMemoryUChar(GlowManager + (GlowIndex * 0x38) + 0x28, 1, ProcessHandle)
            }
            else if (MyTeam == 2 and EntTeam == 3)        ; Если моя команда - терры и вражеская команда - специ
            {
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x8, red_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0xC, green_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x10, blue_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x14, Alpha_ct, ProcessHandle)
                WriteMemoryUChar(GlowManager + (GlowIndex * 0x38) + 0x28, 1, ProcessHandle)
            }
        }
        else                                            ; Если подсветка всех игроков включена - светить всех!
        {
            if (EntTeam == 2)                            ; Если вражеская команда - терры
            {
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x8, red_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0xC, green_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x10, blue_t, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x14, Alpha_t, ProcessHandle)
                WriteMemoryUChar(GlowManager + (GlowIndex * 0x38) + 0x28, 1, ProcessHandle)
            }
            else if (EntTeam == 3)                        ; Если вражеская команда - специ
            {
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x8, red_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0xC, green_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x10, blue_ct, ProcessHandle)
                WriteMemoryfloat(GlowManager + (GlowIndex * 0x38) + 0x14, Alpha_ct, ProcessHandle)
                WriteMemoryUChar(GlowManager + (GlowIndex * 0x38) + 0x28, 1, ProcessHandle)
            }
        }
    }
}

Left::
{
    if (MyTeam == 3)
    {
        red_t := red_t + 0.02
        if (red_t >= 1)
        {
            red_t := 1
        }
        IniWrite, %red_t%, CFG.INI, CFG, КРАСНЫЙ ТЕРРОРИСТОВ
    }
    if (MyTeam == 2)
    {
        red_ct := red_ct + 0.02
        if (red_ct >= 1)
        {
            red_ct := 1
        }
        IniWrite, %red_ct%, CFG.INI, CFG, КРАСНЫЙ СПЕЦОВ
    }
}
return

^Left::
{
    if (MyTeam == 3)
    {
        red_t := red_t - 0.02
        if (red_t <= 0)
        {
            red_t := 0
        }
        IniWrite, %red_t%, CFG.INI, CFG, КРАСНЫЙ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        red_ct := red_ct - 0.02
        if (red_ct <= 0)
        {
            red_ct := 0
        }
        IniWrite, %red_ct%, CFG.INI, CFG, КРАСНЫЙ СПЕЦОВ
    }
}
return

Down::
    {
    if (MyTeam == 3)
    {
        green_t := green_t + 0.02
        if (green_t >= 1)
        {
            green_t := 1
        }
        IniWrite, %green_t%, CFG.INI, CFG, ЗЕЛЕНЫЙ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        green_ct := green_ct + 0.02
        if (green_ct >= 1)
        {
            green_ct := 1
        }
        IniWrite, %green_ct%, CFG.INI, CFG, ЗЕЛЕНЫЙ СПЕЦОВ
    }
}
return

^Down::
{
    if (MyTeam == 3)
    {
        green_t := green_t - 0.02
        if (green_t <= 0)
        {
            green_t := 0
        }
        IniWrite, %green_t%, CFG.INI, CFG, ЗЕЛЕНЫЙ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        green_ct := green_ct - 0.02
        if (green_ct <= 0)
        {
            green_ct := 0
        }
    IniWrite, %green_ct%, CFG.INI, CFG, ЗЕЛЕНЫЙ СПЕЦОВ
    }
}
return

Right::
{
    if (MyTeam == 3)
    {
        blue_t := blue_t + 0.02
        if (blue_t >= 1)
            {
                blue_t := 1
            }
        IniWrite, %blue_t%, CFG.INI, CFG, СИНИЙ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        blue_ct := blue_ct + 0.02
        if (blue_ct >= 1)
        {
            blue_ct := 1
        }
        IniWrite, %blue_ct%, CFG.INI, CFG, СИНИЙ СПЕЦОВ
    }
}
return

^Right::
{
    if (MyTeam == 3)
    {
        blue_t := blue_t - 0.02
        if (blue_t <= 0)
        {
            blue_t := 0
        }
        IniWrite, %blue_t%, CFG.INI, CFG, СИНИЙ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        blue_ct := blue_ct - 0.02
        if (blue_ct <= 0)
        {
            blue_ct := 0
        }
        IniWrite, %blue_ct%, CFG.INI, CFG, СИНИЙ СПЕЦОВ
    }
}
return

Up::
{
    if (MyTeam == 3)
    {
        Alpha_t := Alpha_t + 0.02
        if (Alpha_t >= 1)
        {
            Alpha_t := 1
        }
        IniWrite, %Alpha_t%, CFG.INI, CFG, ЯРКОСТЬ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        Alpha_ct := Alpha_ct + 0.02
        if (Alpha_ct >= 1)
        {
            Alpha_ct := 1
        }
        IniWrite, %Alpha_ct%, CFG.INI, CFG, ЯРКОСТЬ СПЕЦОВ
    }
}
return

^Up::
{
    if (MyTeam == 3)
    {
        Alpha_t := Alpha_t - 0.02
        if (Alpha_t <= 0)
        {
            Alpha_t := 0
        }
        IniWrite, %Alpha_t%, CFG.INI, CFG, ЯРКОСТЬ ТЕРРОРИСТОВ
    }
    else if (MyTeam == 2)
    {
        Alpha_ct := Alpha_ct - 0.02
        if (Alpha_ct <= 0)
        {
            Alpha_ct := 0
        }
        IniWrite, %Alpha_ct%, CFG.INI, CFG, ЯРКОСТЬ СПЕЦОВ
    }
}
return

; ////////////////////////// НЕ ТРОГАТЬ \\\\\\\\\\\\\\\\\\\\\\\\\\
range(from, to)
    {
        range := {}
        if (from < to)
            While, (from <= to)
                range[from++] := A_Index
        else
            While, (from >= to)
                range[from--] := A_Index
        return range
    }

GetDllBase(DllName, PID = 0)
    {
        SetFormat, Integer, Hex
        TH32CS_SNAPMODULE := 0x00000008
        INVALID_HANDLE_VALUE = -1
        VarSetCapacity(me32, 548, 0)
        NumPut(548, me32)
        snapMod := DllCall("CreateToolhelp32Snapshot", "Uint", TH32CS_SNAPMODULE
        , "Uint", PID)
        If (snapMod = INVALID_HANDLE_VALUE)
            {
                SetFormat, Integer, D
                Return 0
            }
    If (DllCall("Module32First", "Uint", snapMod, "Uint", &me32))
        {
            while(DllCall("Module32Next", "Uint", snapMod, "UInt", &me32))
                {
                    If !DllCall("lstrcmpi", "Str", DllName, "UInt", &me32 + 32)
                        {
                            DllCall("CloseHandle", "UInt", snapMod)
                            SetFormat, Integer, D
                            Return NumGet(&me32 + 20)
                        }
                }
        }
        DllCall("CloseHandle", "Uint", snapMod)
        SetFormat, Integer, D
        Return 0
    }

WriteMemory(address, newval, ProcessHandle)
    {
        return DllCall("WriteProcessMemory", "UInt", processhandle, "UInt", address, "UInt*", newval, "UInt", 4, "UInt *", 0)
    }
WriteMemoryUChar( adress, value, processhandle)
    {
        return DllCall("WriteProcessMemory", "Ptr", ProcessHandle, "Ptr", adress, "UChar*", value, "Ptr", 1, "Ptr", 0)
    }
ReadMemory(MADDRESS, PID = 0, ProcessHandle = -1)
    {
        VarSetCapacity(MVALUE,4,0)
        DllCall("ReadProcessMemory","UInt",ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
        Loop 4
            result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
            SetFormat, Integer, D
            
            return, result
    }
WriteMemoryfloat(adress, value, ProcessHandle)
    {
        
        return DllCall("WriteProcessMemory", "UInt", ProcessHandle, "UInt", adress, "float*", value, "Uint", 4, "Uint *", 0)
    }

~*End::ExitApp
return
GUI нет, настроить цвета можно с помощью стрелок на клавиатуре:
Верх - повышение яркости
Лево - добавление красного
Вниз - добавление зеленого
Право - добавление синего
CTRL + Верх - уменьшение яркости
CTRL + Лево - уменьшение красного
CTRL + Вниз - уменьшение зеленого
CTRL + Право уменьшение синего
Клавиша END - вырубить скрипт.
 
vk.com/ahkcsgocheat
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2020
Сообщения
379
Реакции[?]
64
Поинты[?]
2K
Можно сделать лучше, вот структурный glow. Это примерный код, кому надо, тот разберется.

Код:
Glow(ByRef glowObj, ByRef index, ByRef struct, ByRef r, ByRef g, ByRef b, ByRef a, ByRef rwo, ByRef rwu, ByRef fbr, ByRef gs:=0) {
    NumPut(r/255, struct, GLOWSTRUCT_glowColor_r, "float")
    NumPut(g/255, struct, GLOWSTRUCT_glowColor_g, "float")
    NumPut(b/255, struct, GLOWSTRUCT_glowColor_b, "float")
    NumPut(a/255, struct, GLOWSTRUCT_glowColor_a, "float")
    NumPut(rwo, struct, GLOWSTRUCT_renderWhenOccluded, "char")
    NumPut(rwu, struct, GLOWSTRUCT_renderWhenUnoccluded, "char")
    NumPut(fbr, struct, GLOWSTRUCT_fullBloomRender, "char")
    NumPut(gs, struct, GLOWSTRUCT_glowStyle, "int")
    csgo.writeRaw(glowObj+(index*0x38), &struct, 0x38)
}
 
Последнее редактирование:
Сверху Снизу