Помогите, я только учусь

Начинающий
Статус
Оффлайн
Регистрация
3 Май 2020
Сообщения
2
Реакции[?]
0
Поинты[?]
0
1.4. Запрещено в названиях тем использовать ненормативную лексику, а также названия не объясняющими вкратце её сути: «Помогите», "Проблема" и им подобные.
Вопросы дурочка новичка.:stupid:
Нашел исходник glow esp на c++ пару вопросов.
1.почему он жрёт много ресурсов, и есть какой нибудь способ оптимизировать этого зверя?
2.как изменять цвет обводки при уменьшении хп, ну я в теории понимаю как, а на практике нихуя не работает. Я понимаю что нужно изменять
значение WPM<glowStructLocal>(dwGlowManager + (iGlowIndx * 0x38) + 0x4, glowLocal); только вместо 0x4 0x8 0xC типа того? (или я додик и нихуя не понимаю)
3. Еще вопрос, допустим я сделал чит из нескольких исходников, для того что бы он был UD нужно засорить код. Немного не понятно чем? тупо нерабочим кодом, или нечего не делающим, что бы он был просто не такой как у исходников? а потом использовать какой либо протектор?

За ранее огромное спасибо всем кто откликнется на вопросы и поможет разобраться :roflanzdarova:
C++:
include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include "Offsets.h"
//не забыть про оффсеты 
#define dwLocalPlayer 0xD2FB84 
#define dwGlowObjectManager 0x528B880 
#define dwEntityList 0x4D43AB4 
#define m_iGlowIndex 0xA428 
#define m_iTeamNum 0xF4
#define m_iHealth 0x100
#define m_bDormant 0xED

uintptr_t moduleBase;
DWORD procId;
HWND hwnd;
HANDLE hProcess;

uintptr_t GetModuleBaseAddress(const char* modName) {
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
    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);
}

struct glowStructEnemy {
    float red = 1.f;
    float green = 0.f;
    float blue = 0.f;
    float alpha = 1.f;
    uint8_t padding[8];
    float unknown = 1.f;
    uint8_t padding2[4];
    BYTE renderOccluded = true;
    BYTE renderUnoccluded = false;
    BYTE fullBloom = false;
}glowEnm;

struct glowStructLocal {
    float red = 0.f;
    float green = 1.f;
    float blue = 0.f;
    float alpha = 1.f;
    uint8_t padding[8];
    float unknown = 1.f;
    uint8_t padding2[4];
    BYTE renderOccluded = true;
    BYTE renderUnoccluded = false;
    BYTE fullBloom = false;
}glowLocal;

uintptr_t getLocalPlayer() {
    return RPM<uintptr_t>(moduleBase + dwLocalPlayer);
}

int main() {
    hwnd = FindWindowA(NULL, "Counter-Strike: Global Offensive");
    GetWindowThreadProcessId(hwnd, &procId);
    moduleBase = GetModuleBaseAddress("client_panorama.dll");
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, procId);

    while (!GetAsyncKeyState(VK_END))
    {
        uintptr_t dwGlowManager = RPM<uintptr_t>(moduleBase + dwGlowObjectManager);
        int LocalTeam = RPM<int>(getLocalPlayer() + m_iTeamNum);
        for (int i = 1; i < 32; i++) {
            uintptr_t dwEntity = RPM<uintptr_t>(moduleBase + dwEntityList + i * 0x10);
            int iGlowIndx = RPM<int>(dwEntity + m_iGlowIndex);
            int EnmHealth = RPM<int>(dwEntity + m_iHealth); if (EnmHealth < 1 || EnmHealth > 100) continue;
            int Dormant = RPM<int>(dwEntity + m_bDormant); if (Dormant) continue;
            int EntityTeam = RPM<int>(dwEntity + m_iTeamNum);
           
            if (LocalTeam == EntityTeam)
            {
                WPM<glowStructLocal>(dwGlowManager + (iGlowIndx * 0x38) + 0x4, glowLocal);
            }
            else if (LocalTeam != EntityTeam)
            {
                WPM<glowStructEnemy>(dwGlowManager + (iGlowIndx * 0x38) + 0x4, glowEnm);
            }
        }
    }
}
 
Участник
Статус
Оффлайн
Регистрация
28 Янв 2019
Сообщения
552
Реакции[?]
192
Поинты[?]
1K
Чтобы чит был ud, нужен не мусор (который при использовании оптимизации исчезнет при компиляции, лол), а грамотный обход античита. R0 хуки на функции, используемые античитом etc
Правда, в случае вака, кажется, вообще нихуя толком-то и не нужно)) Протектор юзать можно, но не популярный, а лучше найти какой-нить опенсорцный и переписать немного. Хотя, я вижу, тут речь о возможности что-то переписать не идёт
 
Пользователь
Статус
Оффлайн
Регистрация
5 Фев 2018
Сообщения
134
Реакции[?]
33
Поинты[?]
0
у тебя луп стоит без слипа. Поставь Sleep(1..20) это 1.
2. Вынеси инициализацию переменных за цикл.
3. добавь проверки на local player == 0; entity == 0;
4. Сократи цикл : если entity == 0 -> достигнут максимальный индекс для игроков. i = 31(32)
5. добавь скип. Зачем тебе по 500 раз узнавать локал плеера, если можно сократить этот процесс в 2-3 раза. static bool skip = false; if(!skip){находи тиму локального игрока}; skip = !skip; (я хз, лучше будет или нет, но мне кажется, что поменять бул и сделать проверку менее ресурсозатратно, чем прочитать значение из памяти игры).
6. Попробуй создать отдельный класс для работы с памятью, а функции сделай вложенными(inline) - так тоже перфоманс возрастет
 
Сверху Снизу