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