Загрузка данных


#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <Psapi.h>
#include <stdio.h>
#pragma comment(lib, "Psapi.lib")

int main() {
    HWND gameWnd = FindWindowA(NULL, "Counter-Strike");
    if (!gameWnd) { MessageBoxA(0, "Окно не найдено", "Ошибка", 0); return 1; }
    
    DWORD pid;
    GetWindowThreadProcessId(gameWnd, &pid);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    
    HMODULE mods[1024];
    DWORD needed;
    EnumProcessModules(hProcess, mods, sizeof(mods), &needed);
    DWORD clientBase = 0;
    for (unsigned i = 0; i < needed / sizeof(HMODULE); i++) {
        char name[256];
        GetModuleBaseNameA(hProcess, mods[i], name, sizeof(name));
        if (strcmp(name, "hw.dll") == 0) clientBase = (DWORD)mods[i];
    }
    
    char msg[256];
    sprintf(msg, "clientBase: %p\nИщем LocalPlayer...", (void*)clientBase);
    MessageBoxA(0, msg, "Поиск", 0);
    
    // Поиск LocalPlayer по значению здоровья 100
    for (int offset = 0; offset < 0x200000; offset += 4) {
        DWORD addr = clientBase + offset;
        DWORD value;
        ReadProcessMemory(hProcess, (LPCVOID)addr, &value, 4, NULL);
        if (value == 100) {
            // Проверяем, что рядом есть команда (1 или 2)
            DWORD team;
            ReadProcessMemory(hProcess, (LPCVOID)(addr - 0x8), &team, 4, NULL);
            if (team == 1 || team == 2) {
                DWORD localPlayerAddr = addr - 0xF8;
                sprintf(msg, "Найдено!\ndwLocalPlayer = 0x%X\nАбсолютный адрес: %p", offset - 0xF8, (void*)localPlayerAddr);
                MessageBoxA(0, msg, "Успех!", 0);
                return 0;
            }
        }
    }
    
    MessageBoxA(0, "Не найдено. Убедитесь, что вы живы и в катке.", "Ошибка", 0);
    return 1;
}