aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-11-24 18:40:05 +0100
committerToni Uhlig <matzeton@googlemail.com>2020-11-24 18:40:05 +0100
commite75e5ddfea7fbb581d0be0fd680d06a567078b39 (patch)
treef0d2ef12d9545c78b59216eeaac73ed711854312
parent578e9a52f81fb00177e32121b3a6628d1b667f1e (diff)
parent11ab26cd9642d6be7496df5e4e14486a51fc5419 (diff)
Merge remote-tracking branch 'impl/VS-2017'
-rw-r--r--CheatEngineServer/CheatEngine.h74
-rw-r--r--CheatEngineServer/CheatEngineServer.cpp83
-rw-r--r--CheatEngineServer/CheatEngineServer.vcxproj168
-rw-r--r--CheatEngineServer/CheatEngineServer.vcxproj.filters33
-rw-r--r--CheatEngineServer/CommandDispatcher.cpp102
-rw-r--r--CheatEngineServer/CommandDispatcher.h7
-rw-r--r--KMemDriver.sln18
7 files changed, 479 insertions, 6 deletions
diff --git a/CheatEngineServer/CheatEngine.h b/CheatEngineServer/CheatEngine.h
new file mode 100644
index 0000000..3cfbc32
--- /dev/null
+++ b/CheatEngineServer/CheatEngine.h
@@ -0,0 +1,74 @@
+#pragma once
+
+#include <winsock.h>
+
+#define CE_PORT "52736"
+
+typedef enum ce_command {
+ CMD_GETVERSION = 0,
+ CMD_CLOSECONNECTION,
+ CMD_TERMINATESERVER,
+ CMD_OPENPROCESS,
+ CMD_CREATETOOLHELP32SNAPSHOT,
+ CMD_PROCESS32FIRST,
+ CMD_PROCESS32NEXT,
+ CMD_CLOSEHANDLE,
+ CMD_VIRTUALQUERYEX,
+ CMD_READPROCESSMEMORY,
+ CMD_WRITEPROCESSMEMORY,
+ CMD_STARTDEBUG,
+ CMD_STOPDEBUG,
+ CMD_WAITFORDEBUGEVENT,
+ CMD_CONTINUEFROMDEBUGEVENT,
+ CMD_SETBREAKPOINT,
+ CMD_REMOVEBREAKPOINT,
+ CMD_SUSPENDTHREAD,
+ CMD_RESUMETHREAD,
+ CMD_GETTHREADCONTEXT,
+ CMD_SETTHREADCONTEXT,
+ CMD_GETARCHITECTURE,
+ CMD_MODULE32FIRST,
+ CMD_MODULE32NEXT,
+ CMD_GETSYMBOLLISTFROMFILE,
+ CMD_LOADEXTENSION,
+ CMD_ALLOC,
+ CMD_FREE,
+ CMD_CREATETHREAD,
+ CMD_LOADMODULE,
+ CMD_SPEEDHACK_SETSPEED,
+ CMD_VIRTUALQUERYEXFULL,
+ CMD_GETREGIONINFO,
+ CMD_AOBSCAN = 200,
+ CMD_COMMANDLIST2 = 255,
+
+ CMD_MAX
+} ce_command;
+
+static inline char const * ce_command_to_string(enum ce_command cmd)
+{
+ static char const * const cmd_map[] = {
+ "CMD_GETVERSION", "CMD_CLOSECONNECTION", "CMD_TERMINATESERVER", "CMD_OPENPROCESS",
+ "CMD_CREATETOOLHELP32SNAPSHOT", "CMD_PROCESS32FIRST", "CMD_PROCESS32NEXT", "CMD_CLOSEHANDLE",
+ "CMD_VIRTUALQUERYEX", "CMD_READPROCESSMEMORY", "CMD_WRITEPROCESSMEMORY", "CMD_STARTDEBUG",
+ "CMD_STOPDEBUG", "CMD_WAITFORDEBUGEVENT", "CMD_CONTINUEFROMDEBUGEVENT", "CMD_SETBREAKPOINT",
+ "CMD_REMOVEBREAKPOINT", "CMD_SUSPENDTHREAD", "CMD_RESUMETHREAD", "CMD_GETTHREADCONTEXT",
+ "CMD_SETTHREADCONTEXT", "CMD_GETARCHITECTURE", "CMD_MODULE32FIRST", "CMD_MODULE32NEXT",
+ "CMD_GETSYMBOLLISTFROMFILE", "CMD_LOADEXTENSION", "CMD_ALLOC", "CMD_FREE", "CMD_CREATETHREAD",
+ "CMD_LOADMODULE", "CMD_SPEEDHACK_SETSPEED", "CMD_VIRTUALQUERYEXFULL", "CMD_GETREGIONINFO",
+ "CMD_AOBSCAN", "CMD_COMMANDLIST2"
+ };
+ if (cmd < 0 || cmd >= CMD_MAX)
+ {
+ return "Unknown Command";
+ }
+ return cmd_map[cmd];
+}
+
+class CEConnection {
+public:
+ explicit CEConnection(SOCKET s) : sock(s) {}
+ SOCKET getSocket(void) { return sock; }
+ void closeSocket(void) { closesocket(sock); }
+private:
+ SOCKET sock;
+}; \ No newline at end of file
diff --git a/CheatEngineServer/CheatEngineServer.cpp b/CheatEngineServer/CheatEngineServer.cpp
new file mode 100644
index 0000000..3dc6361
--- /dev/null
+++ b/CheatEngineServer/CheatEngineServer.cpp
@@ -0,0 +1,83 @@
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <stdio.h>
+
+#include <iostream>
+#include <thread>
+
+#include "CheatEngine.h"
+#include "CommandDispatcher.h"
+
+static SOCKET make_accept_sock(const char *servspec) {
+ const int one = 1;
+ struct addrinfo hints = {};
+ struct addrinfo *res = 0, *ai = 0, *ai4 = 0;
+ SOCKET sock;
+
+ hints.ai_family = PF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_PASSIVE;
+
+ if (servspec == NULL)
+ {
+ servspec = "0::0";
+ }
+ std::cout << "Listen on " << servspec << ":" << CE_PORT << std::endl;
+ getaddrinfo(servspec, CE_PORT, &hints, &res);
+
+ for (ai = res; ai; ai = ai->ai_next) {
+ if (ai->ai_family == PF_INET6) break;
+ else if (ai->ai_family == PF_INET) ai4 = ai;
+ }
+ ai = ai ? ai : ai4;
+
+ sock = socket(ai->ai_family, SOCK_STREAM, 0);
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&one, sizeof(one));
+ if (bind(sock, ai->ai_addr, (int)ai->ai_addrlen) != 0)
+ {
+ }
+ if (listen(sock, 256) != 0)
+ {
+ }
+ freeaddrinfo(res);
+
+ return sock;
+}
+
+static void new_connection(SOCKET sock) {
+ CEConnection cec(sock);
+ std::cout << "New connection .." << std::endl;
+ while (1) {
+ if (CheckForAndDispatchCommand(cec) != 0)
+ {
+ std::cout << "Closing connection .." << std::endl;
+ cec.closeSocket();
+ break;
+ }
+ }
+}
+
+static void accept_loop(const char *servspec) {
+ SOCKET sock = make_accept_sock(servspec);
+
+ for (;;) {
+ SOCKET new_sock = accept(sock, 0, 0);
+ new_connection(new_sock);
+ //std::thread t(new_connection, new_sock);
+ //t.detach();
+ }
+}
+
+int main()
+{
+ WSADATA wsaData;
+ DWORD iResult;
+
+ iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
+ if (iResult != 0) {
+ std::cout << "WSAStartup failed: " << iResult << "\n";
+ return 1;
+ }
+
+ accept_loop("0.0.0.0");
+} \ No newline at end of file
diff --git a/CheatEngineServer/CheatEngineServer.vcxproj b/CheatEngineServer/CheatEngineServer.vcxproj
new file mode 100644
index 0000000..623d97d
--- /dev/null
+++ b/CheatEngineServer/CheatEngineServer.vcxproj
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <VCProjectVersion>15.0</VCProjectVersion>
+ <ProjectGuid>{B6441DA8-67E2-47E9-9A10-CD5C90173EAC}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>CheatEngineServer</RootNamespace>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ <SpectreMitigation>false</SpectreMitigation>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ <SpectreMitigation>false</SpectreMitigation>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);ws2_32.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies);ws2_32.lib</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="CheatEngineServer.cpp" />
+ <ClCompile Include="CommandDispatcher.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="CheatEngine.h" />
+ <ClInclude Include="CommandDispatcher.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/CheatEngineServer/CheatEngineServer.vcxproj.filters b/CheatEngineServer/CheatEngineServer.vcxproj.filters
new file mode 100644
index 0000000..2aead5c
--- /dev/null
+++ b/CheatEngineServer/CheatEngineServer.vcxproj.filters
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="CheatEngineServer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="CommandDispatcher.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="CheatEngine.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="CommandDispatcher.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/CheatEngineServer/CommandDispatcher.cpp b/CheatEngineServer/CommandDispatcher.cpp
new file mode 100644
index 0000000..1f9a7d1
--- /dev/null
+++ b/CheatEngineServer/CommandDispatcher.cpp
@@ -0,0 +1,102 @@
+#include "CommandDispatcher.h"
+
+#include <winsock.h>
+
+#include <iostream>
+
+int DispatchCommand(CEConnection & con, char command)
+{
+ enum ce_command cmd = (enum ce_command)command;
+
+ std::cout << "Command: " << ce_command_to_string(cmd) << std::endl;
+
+ switch (cmd)
+ {
+ case CMD_GETVERSION:
+ break;
+ case CMD_CLOSECONNECTION:
+ break;
+ case CMD_TERMINATESERVER:
+ break;
+ case CMD_OPENPROCESS:
+ break;
+ case CMD_CREATETOOLHELP32SNAPSHOT:
+ break;
+ case CMD_PROCESS32FIRST:
+ break;
+ case CMD_PROCESS32NEXT:
+ break;
+ case CMD_CLOSEHANDLE:
+ break;
+ case CMD_VIRTUALQUERYEX:
+ break;
+ case CMD_READPROCESSMEMORY:
+ break;
+ case CMD_WRITEPROCESSMEMORY:
+ break;
+ case CMD_STARTDEBUG:
+ break;
+ case CMD_STOPDEBUG:
+ break;
+ case CMD_WAITFORDEBUGEVENT:
+ break;
+ case CMD_CONTINUEFROMDEBUGEVENT:
+ break;
+ case CMD_SETBREAKPOINT:
+ break;
+ case CMD_REMOVEBREAKPOINT:
+ break;
+ case CMD_SUSPENDTHREAD:
+ break;
+ case CMD_RESUMETHREAD:
+ break;
+ case CMD_GETTHREADCONTEXT:
+ break;
+ case CMD_SETTHREADCONTEXT:
+ break;
+ case CMD_GETARCHITECTURE:
+ break;
+ case CMD_MODULE32FIRST:
+ break;
+ case CMD_MODULE32NEXT:
+ break;
+ case CMD_GETSYMBOLLISTFROMFILE:
+ break;
+ case CMD_LOADEXTENSION:
+ break;
+ case CMD_ALLOC:
+ break;
+ case CMD_FREE:
+ break;
+ case CMD_CREATETHREAD:
+ break;
+ case CMD_LOADMODULE:
+ break;
+ case CMD_SPEEDHACK_SETSPEED:
+ break;
+ case CMD_VIRTUALQUERYEXFULL:
+ break;
+ case CMD_GETREGIONINFO:
+ break;
+ case CMD_AOBSCAN:
+ break;
+ case CMD_COMMANDLIST2:
+ break;
+ }
+
+ return 1;
+}
+
+int CheckForAndDispatchCommand(CEConnection & con)
+{
+ int r;
+ char command;
+
+ r = recv(con.getSocket(), &command, 1, 0);
+ if (r == 1)
+ {
+ return DispatchCommand(con, command);
+ }
+
+ return 0;
+} \ No newline at end of file
diff --git a/CheatEngineServer/CommandDispatcher.h b/CheatEngineServer/CommandDispatcher.h
new file mode 100644
index 0000000..c4c6e55
--- /dev/null
+++ b/CheatEngineServer/CommandDispatcher.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "CheatEngine.h"
+
+int CheckForAndDispatchCommand(CEConnection & con);
+
+int DispatchCommand(CEConnection & con, char command); \ No newline at end of file
diff --git a/KMemDriver.sln b/KMemDriver.sln
index bb0274c..c38f0f1 100644
--- a/KMemDriver.sln
+++ b/KMemDriver.sln
@@ -14,6 +14,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IntegrationTest", "Integrat
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB} = {B6790A97-6995-46B6-AD73-AC5BC4AC76DB}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CheatEngineServer", "CheatEngineServer\CheatEngineServer.vcxproj", "{B6441DA8-67E2-47E9-9A10-CD5C90173EAC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -22,21 +24,25 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Debug|x64.ActiveCfg = Debug|x64
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Debug|x64.Build.0 = Debug|x64
- {5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.ActiveCfg = Release|x64
- {5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.Build.0 = Release|x64
+ {5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.ActiveCfg = Debug|x64
+ {5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.Build.0 = Debug|x64
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.Deploy.0 = Release|x64
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Debug|x64.ActiveCfg = Debug|x64
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Debug|x64.Build.0 = Debug|x64
- {B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Release|x64.ActiveCfg = Release|x64
- {B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Release|x64.Build.0 = Release|x64
+ {B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Release|x64.ActiveCfg = Debug|x64
+ {B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Release|x64.Build.0 = Debug|x64
{E27E6F2C-154E-46AF-BED4-78D50C751565}.Debug|x64.ActiveCfg = Release|x64
{E27E6F2C-154E-46AF-BED4-78D50C751565}.Debug|x64.Build.0 = Release|x64
{E27E6F2C-154E-46AF-BED4-78D50C751565}.Release|x64.ActiveCfg = Release|x64
{E27E6F2C-154E-46AF-BED4-78D50C751565}.Release|x64.Build.0 = Release|x64
{AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Debug|x64.ActiveCfg = Debug|x64
{AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Debug|x64.Build.0 = Debug|x64
- {AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Release|x64.ActiveCfg = Release|x64
- {AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Release|x64.Build.0 = Release|x64
+ {AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Release|x64.ActiveCfg = Debug|x64
+ {AD4E6887-32BA-4CC9-924C-18F0ECAFB576}.Release|x64.Build.0 = Debug|x64
+ {B6441DA8-67E2-47E9-9A10-CD5C90173EAC}.Debug|x64.ActiveCfg = Debug|x64
+ {B6441DA8-67E2-47E9-9A10-CD5C90173EAC}.Debug|x64.Build.0 = Debug|x64
+ {B6441DA8-67E2-47E9-9A10-CD5C90173EAC}.Release|x64.ActiveCfg = Debug|x64
+ {B6441DA8-67E2-47E9-9A10-CD5C90173EAC}.Release|x64.Build.0 = Debug|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE