summaryrefslogtreecommitdiff
path: root/csgo-loader/csgo-server/RemoteCode/RemoteCodeServer.cpp
blob: daa42ae8ec43440eb6924f6e7aff4e4126ddcfbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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; }
}