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


#include "pch.h"
#include <Windows.h>
#include <iostream>

// Основная функция, которая выполняется в отдельном потоке после инжекта
DWORD WINAPI MainThread(LPVOID lpReserved)
{
    // 1. Создаем консоль для отладки (чтобы видеть логи и статус)
    AllocConsole();
    FILE* f;
    freopen_s(&f, "CONOUT$", "w", stdout);

    SetConsoleTitleA("Red Studio | Unheard Edition - Console Log");
    std::cout << "[+] Red Studio Internal Loaded Successfully!\n";
    std::cout << "[+] Press END to Unhook & Exit.\n";

    // 2. Главный цикл чита (пока не нажата клавиша END / VK_END)
    while (!(GetAsyncKeyState(VK_END) & 0x8000))
    {
        // Здесь будет вызов нашей логики: Ragebot, Memory Scanners, ImGui Render Loops
        
        Sleep(10); // Чтобы не грузить процессор на 100%
    }

    // 3. Безопасная выгрузка DLL при нажатии END
    std::cout << "[-] Unloading Red Studio...\n";
    if (f) fclose(f);
    FreeConsole();
    FreeLibraryAndExitThread((HMODULE)lpReserved, 0);
    return 0;
}

// Точка входа в DLL
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        // Отключаем лишние вызовы при создании потоков для оптимизации
        DisableThreadLibraryCalls(hModule);
        
        // Запускаем наш основной поток
        CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)MainThread, hModule, 0, nullptr);
        break;

    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}