Вопрос Не работает Glow ESP (C++)

Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
Залупа не хочет работать, не могу понять, где я проебался... (Сеты новые)

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


const DWORD dwLocalPlayer = 0xD8A2DC;
const DWORD dwEntityList = 0x4DA31EC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA438;
const DWORD dwGlowObjectManager = 0x52EB678;


HANDLE process;
DWORD clientBase;


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


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


void GlowESP()
{
    while (true)
    {
        int player = readMem<DWORD>(clientBase + dwLocalPlayer);
        int glow_manager = readMem<DWORD>(clientBase + dwGlowObjectManager);
        int team = readMem<DWORD>(player + m_iTeamNum);


        for (int i = 0; i < 32; i++)
        {
            int entity = readMem<DWORD>(clientBase + dwGlowObjectManager + i * 0x10);

            if (entity)
            {
                int entity_team_id = readMem<DWORD>(entity + m_iTeamNum);
                int entity_glow = readMem<DWORD>(entity + m_iGlowIndex);

                if (entity_team_id != team)
                {
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x8, 1.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0xC, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x10, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x14, 1.f);

                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x28, true);
                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x29, false);

                }
            }
        }
    }
}


int main() {

    HWND hwnd;
    DWORD pid;

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    hwnd = FindWindowA(0, "Counter-Strike: Global Offensive");

    GetWindowThreadProcessId(hwnd, &pid);

    process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    clientBase = getModuleBaseAddress(pid, "client.dll");

    GlowESP();
}
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
Попробуй сделать через структуру глоу
Куда, там не в этом дело, кажись проблема в
clientBase = getModuleBaseAddress(pid, "client.dll");
В переменную 0 пишет. А вот почему он это делает...
 
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,000
Реакции[?]
1,275
Поинты[?]
0
Продавец
Статус
Оффлайн
Регистрация
28 Окт 2019
Сообщения
1,153
Реакции[?]
302
Поинты[?]
3K
Куда, там не в этом дело, кажись проблема в
clientBase = getModuleBaseAddress(pid, "client.dll");
В переменную 0 пишет. А вот почему он это делает...
Странная реализация получения pid процесса по названию в окне, точнее неверная.
Используй перебор имени процесса "csgo.exe" среди списка активных процессов и получение его pid, верный код у тебя уже есть, ты даже просил помощь с ним
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
Странная реализация получения pid процесса по названию в окне, точнее неверная.
Используй перебор имени процесса "csgo.exe" среди списка активных процессов и получение его pid, верный код у тебя уже есть, ты даже просил помощь с ним
Отмена, я даже в ручную pid ввел, не работает.
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Залупа не хочет работать, не могу понять, где я проебался... (Сеты новые)

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


const DWORD dwLocalPlayer = 0xD8A2DC;
const DWORD dwEntityList = 0x4DA31EC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA438;
const DWORD dwGlowObjectManager = 0x52EB678;


HANDLE process;
DWORD clientBase;


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


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


void GlowESP()
{
    while (true)
    {
        int player = readMem<DWORD>(clientBase + dwLocalPlayer);
        int glow_manager = readMem<DWORD>(clientBase + dwGlowObjectManager);
        int team = readMem<DWORD>(player + m_iTeamNum);


        for (int i = 0; i < 32; i++)
        {
            int entity = readMem<DWORD>(clientBase + dwGlowObjectManager + i * 0x10);

            if (entity)
            {
                int entity_team_id = readMem<DWORD>(entity + m_iTeamNum);
                int entity_glow = readMem<DWORD>(entity + m_iGlowIndex);

                if (entity_team_id != team)
                {
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x8, 1.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0xC, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x10, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x14, 1.f);

                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x28, true);
                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x29, false);

                }
            }
        }
    }
}


int main() {

    HWND hwnd;
    DWORD pid;

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    hwnd = FindWindowA(0, "Counter-Strike: Global Offensive");

    GetWindowThreadProcessId(hwnd, &pid);

    process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    clientBase = getModuleBaseAddress(pid, "client.dll");

    GlowESP();
}
ВРОДЕ:
На тиммейтов ты проверяешь так: entity_team_id != team, и entity team id у тебя = readMem<DWORD>(entity + m_iTeamNum). Тебе же для него нужно оффсет локалплеера + m_iTeamNum плюсовать, а не entity, которое у тебя = clientBase + dwGlowObjectManager
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
Все попробовал, все равно не работает.
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Все попробовал, все равно не работает.
Моё тоже?
Попробуй вместо int entity_team_id = readMem<DWORD>(entity + m_iTeamNum); -> int entity_team_id = readMem<DWORD>(player + m_iTeamNum);, ибо у тебя entity - не просто ентити, а глоу ентити, по сути
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
C++:
#include <Windows.h>
#include<SubAuth.h>
#include "Interface.h"

#include <cstdint>

Interface Revolution;
#define dwLocalPlayer            0xD8A2DC
#define dwEntityList            0x4DA31EC
#define dwGlowObjectManager        0x52EB678

#define m_iTeamNum                0xF4
#define m_iHealth                0x100

struct GlowObjectManagerDefinition_t {
    BYTE nextFreeSlot[0x4];
    BYTE entity[0x4];
    float r;
    float g;
    float b;
    float a;
    BYTE pad0[0x10];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    BYTE pad1[0xE];
};


int main()
{
    while (!Revolution.Attach()) {}
    while (!Revolution.GetModules()) {}

    DWORD32 playerBase = 0;
    DWORD32 playerHp = 0;
    DWORD32 playerTeam = 0;

    DWORD32 glowArray = 0;
    DWORD32 glowCout = 0;

    DWORD32 entBase = 0;
    DWORD32 entHp = 0;
    DWORD32 entTeam = 0;
    GlowObjectManagerDefinition_t Glow = { };

    while (1)
    {
        Revolution.Read(Revolution.Modules->bClient + dwGlowObjectManager, &glowArray);
        Revolution.Read(Revolution.Modules->bClient + dwGlowObjectManager + 0x4, &glowCout);

        for (DWORD32 i = 0; i < glowCout; i++)
        {
            Revolution.Read(glowArray + 0x38 * i + 0x4, &entBase);
            if (!entBase)
                continue;

            Revolution.Read(entBase + m_iHealth, &entHp);
            if (!entHp)
                continue;

            Revolution.Read(entBase + m_iTeamNum, &entTeam);

            if (entTeam == playerTeam)
                continue;

            Revolution.Read(glowArray + (i * 0x38), &Glow);
            if (entTeam == 3)
            {
                Glow.r = 0.447058827f;
                Glow.g = 0.607843161f;
                Glow.b = 0.8666667f;
                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;
            }

            Revolution.Write(glowArray + (i * 0x38), &Glow);
        }
    }

}

попробуй это
Это другой код.
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
Пробовал, нихуя.
Чекни стек, все ли у тебя функции правильно работают и возвращают правильные значения.
+ может быть проблема с
C++:
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x8, 1.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0xC, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x10, 0.f);
                    writeMem<float>(glow_manager + entity_glow * 0x38 + 0x14, 1.f);

                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x28, true);
                    writeMem<bool>(glow_manager + entity_glow * 0x38 + 0x29, false);
Валв изменили структуру глоу у теперь нужно 4 (байта вроде, не помню) добавлять к каждому этому числу
2021-07-27_164425.png
У тебя они новые, ты смотрел?
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,442
Реакции[?]
671
Поинты[?]
30K
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
У тебя код вообще до функции GlowESP доходит?
 
Сверху Снизу