#include namespace RemoteCode { // Select a game to inject the cheat for bool RemoteInjectionClient::Start(UserExperience::SelectedGame Game) { if(Game >= UserExperience::SelectedGame::GAME_MAX) return false; // TODO: Add any other games :-) switch(Game) { case UserExperience::SelectedGame::GAME_CSGO: case UserExperience::SelectedGame::GAME_CSGO_BETA: strcpy_s(m_ProcessName, "csgo.exe"); break; } return true; } // Allocates a page in the game memory, which will be used to // write and execute the DLL. uintptr_t RemoteInjectionClient::AllocateImagePage(size_t SizeOfImage) { if(!m_Process) return uintptr_t{}; // Allocate enough space to map the image m_AllocationBase = m_Process.Allocate(SizeOfImage); return (uintptr_t)m_AllocationBase; } // Initializes m_Process with the game process. bool RemoteInjectionClient::OpenGameHandle() { return m_Process.Start(m_ProcessName); } // Writes the cheat binary to the allocated page. void RemoteInjectionClient::WriteToMap(ByteArray &CheatBin) { // is this loss? m_Process.Write(m_AllocationBase, CheatBin.data(), CheatBin.size()); } }