From ace9ae2117175dfe5e14b259db2e0536f8ec7a8a Mon Sep 17 00:00:00 2001 From: boris Date: Mon, 24 Dec 2018 20:39:09 +1300 Subject: fffffffff --- .../csgo-server/RemoteCode/RemoteCodeServer.cpp | 52 ++++++++++++++++++++++ .../csgo-server/RemoteCode/RemoteCodeServer.hpp | 33 +++++++++++++- .../RemoteCode/RemoteInjectionServer.hpp | 7 ++- 3 files changed, 90 insertions(+), 2 deletions(-) (limited to 'csgo-loader/csgo-server/RemoteCode') diff --git a/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp b/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp index 7e4b553..daa42ae 100644 --- a/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp +++ b/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp @@ -1 +1,53 @@ #include + +namespace RemoteCode +{ + ByteArray Shellcode = { + // TODO: Add shellcode. + }; + + bool RemoteCodeServer::Start(ByteArray &Parameters) + { + RemoteCodeParameters CodeParams = *(RemoteCodeParameters *)&Parameters[0]; + + // Check if the header is valid. + if((!CodeParams.m_EndSceneVmt || !CodeParams.m_OriginalEndScene) || + (CodeParams.m_EntryPoint || CodeParams.m_CheatHeader)) + { + // TODO: Ban user (probably using fake client) + return false; + } + + // Set up shellcode. + m_CustomCode.insert( + m_CustomCode.begin(), + Shellcode.begin(), + Shellcode.end() + ); + + // TODO: Set up pointers in shellcode. + + return true; + } + + uintptr_t RemoteCodeServer::GetOffsetByPattern(ByteArray &Data, ByteArray Pattern) + { + if(Data.empty()) + return uintptr_t{}; + + ByteArray::iterator Position = std::search( + Data.begin(), + Data.end(), + Pattern.begin(), + Pattern.end() + ); + + if(Position != Data.end()) + return (uintptr_t)std::distance(Data.begin(), Position); + + return uintptr_t{}; + } + + // is this loss? + ByteArray RemoteCodeServer::GetShellcode() { return m_CustomCode; } +} \ No newline at end of file diff --git a/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.hpp b/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.hpp index 57f1499..dde8b7d 100644 --- a/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.hpp +++ b/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.hpp @@ -1,6 +1,37 @@ #pragma once +#include +#include +#include + +using ByteArray = std::vector; + namespace RemoteCode { - + struct RemoteCodeParameters + { + uintptr_t m_EndSceneVmt; + uintptr_t m_OriginalEndScene; + uintptr_t m_EntryPoint; + uintptr_t m_CheatHeader; + uintptr_t m_VirtualProtect; + }; + + class RemoteCodeServer + { + ByteArray m_CustomCode; + + // swoo + uintptr_t GetOffsetByPattern(ByteArray &Data, ByteArray Pattern); + + public: + RemoteCodeServer() = default; + + // Send client the prepared shellcode. + // This will also send the original and vmt address of endscene. + bool Start(ByteArray &Parameters); + + // Get the response for the client + ByteArray GetShellcode(); + }; } \ No newline at end of file diff --git a/csgo-loader/csgo-server/RemoteCode/RemoteInjectionServer.hpp b/csgo-loader/csgo-server/RemoteCode/RemoteInjectionServer.hpp index 57f1499..f8f7274 100644 --- a/csgo-loader/csgo-server/RemoteCode/RemoteInjectionServer.hpp +++ b/csgo-loader/csgo-server/RemoteCode/RemoteInjectionServer.hpp @@ -1,6 +1,11 @@ #pragma once +#include + namespace RemoteCode { - + class RemoteInjectionServer + { + + }; } \ No newline at end of file -- cgit v1.2.3