summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp')
-rw-r--r--csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp52
1 files changed, 52 insertions, 0 deletions
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 <RemoteCode/RemoteCodeServer.hpp>
+
+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