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