diff options
| author | boris <wzn@moneybot.cc> | 2018-12-24 20:39:09 +1300 |
|---|---|---|
| committer | boris <wzn@moneybot.cc> | 2018-12-24 20:39:09 +1300 |
| commit | ace9ae2117175dfe5e14b259db2e0536f8ec7a8a (patch) | |
| tree | e657af71b250546fb3e135fdadb1cd31f1a07671 /csgo-loader/csgo-server | |
| parent | 8a6e64f020047709f53ddd35797c511a5d3239fe (diff) | |
fffffffff
Diffstat (limited to 'csgo-loader/csgo-server')
3 files changed, 90 insertions, 2 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 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 <cstdint>
+#include <vector>
+#include <algorithm>
+
+using ByteArray = std::vector<uint8_t>;
+
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 <windows.h>
+
namespace RemoteCode
{
-
+ class RemoteInjectionServer
+ {
+
+ };
}
\ No newline at end of file |
