C++: Output DLL injection boilerplate project

This commit is contained in:
Katy Coe
2020-07-19 15:44:26 +02:00
parent 071b1efa67
commit 386a666fff
4 changed files with 642 additions and 26 deletions

View File

@@ -60,6 +60,192 @@ namespace Il2CppInspector.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///
///#define WIN32_LEAN_AND_MEAN
///#include &quot;windows.h&quot;
///#include &quot;dllmain.h&quot;
///
///// DLL entry point
///BOOL APIENTRY DllMain( HMODULE hModule,
/// DWORD ul_reason_for_call,
/// LPVOID lpReserved
/// )
///{
/// switch (ul_reason_for_call)
/// {
/// case DLL_PROCESS_ATTACH:
/// init_il2cpp();
/// CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Run, NULL, [rest of string was truncated]&quot;;.
/// </summary>
internal static string Cpp_DLLMainCpp {
get {
return ResourceManager.GetString("Cpp-DLLMainCpp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///
///// Entry point declaration for custom injected code
///void Run();
///
///// IL2CPP initializer
///void init_il2cpp();.
/// </summary>
internal static string Cpp_DLLMainH {
get {
return ResourceManager.GetString("Cpp-DLLMainH", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///// Logging functions
///
///#define WIN32_LEAN_AND_MEAN
///#define WIN32_EXTRA_LEAN
///#include &lt;windows.h&gt;
///#include &quot;helpers.h&quot;
///
///// Write some text to the log file
///void LogWrite(std::string text)
///{
/// HANDLE hfile = CreateFileW(LOG_FILE, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
///
/// if (hfile == INVALID_HANDLE_VALUE)
/// MessageBox(0, L&quot;Could not open log file&quot;, 0, [rest of string was truncated]&quot;;.
/// </summary>
internal static string Cpp_HelpersCpp {
get {
return ResourceManager.GetString("Cpp-HelpersCpp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///// Logging functions
///
///#pragma once
///#include &lt;string&gt;
///#include &lt;sstream&gt;
///#include &lt;iomanip&gt;
///
///extern const LPCWSTR LOG_FILE;
///
///// Helper function to append text to a file
///void LogWrite(std::string text);
///
///// Helper function to convert a pointer to hex
///template&lt;typename T&gt; std::string to_hex_string(T i) {
/// std::stringstream stream;
/// stream &lt;&lt; &quot;0x&quot; &lt;&lt; std::setfill(&apos;0&apos;) &lt;&lt; std::setw(sizeof(T) * 2) &lt;&lt; [rest of string was truncated]&quot;;.
/// </summary>
internal static string Cpp_HelpersH {
get {
return ResourceManager.GetString("Cpp-HelpersH", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///// IL2CPP application initializer
///
///#pragma once
///
///#include &lt;cstdint&gt;
///
///// Application-specific types
///#include &quot;il2cpp-types.h&quot;
///
///// IL2CPP API function pointers
///#include &quot;il2cpp-function-ptr.h&quot;
///
///// IL2CPP APIs
///#define DO_API(r, n, p) r (*n) p
///#include &quot;il2cpp-api-functions.h&quot;
///#undef DO_API
///
///// Application-specific functions
///#define DO_APP_FUNC(a, r, n, p) r (*n) p
///#include &quot;il2cpp-functions.h&quot;
///#und [rest of string was truncated]&quot;;.
/// </summary>
internal static string Cpp_IL2CPPInitH {
get {
return ResourceManager.GetString("Cpp-IL2CPPInitH", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to // Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
///// Custom injected code entry point
///
///#include &quot;il2cpp-init.h&quot;
///#include &quot;helpers.h&quot;
///
///using namespace app;
///
///// Set the name of your log file here
///extern const LPCWSTR LOG_FILE = L&quot;il2cpp-log.txt&quot;;
///
///// Injected code entry point
///void Run()
///{
/// LogWrite(&quot;Startup&quot;);
///
/// // Place your custom code here
///}.
/// </summary>
internal static string Cpp_MainCpp {
get {
return ResourceManager.GetString("Cpp-MainCpp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
///&lt;Project DefaultTargets=&quot;Build&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
/// &lt;ItemGroup Label=&quot;ProjectConfigurations&quot;&gt;
/// &lt;ProjectConfiguration Include=&quot;Debug|Win32&quot;&gt;
/// &lt;Configuration&gt;Debug&lt;/Configuration&gt;
/// &lt;Platform&gt;Win32&lt;/Platform&gt;
/// &lt;/ProjectConfiguration&gt;
/// &lt;ProjectConfiguration Include=&quot;Release|Win32&quot;&gt;
/// &lt;Configuration&gt;Release&lt;/Configuration&gt;
/// &lt;Platform&gt;Win32&lt;/Platform&gt;
/// &lt;/ProjectConfiguration&gt;
/// &lt;ProjectCon [rest of string was truncated]&quot;;.
/// </summary>
internal static string CppProjTemplate {
get {
return ResourceManager.GetString("CppProjTemplate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Microsoft Visual Studio Solution File, Format Version 12.00
///# Visual Studio Version 16
///VisualStudioVersion = 16.0.30204.135
///MinimumVisualStudioVersion = 10.0.40219.1
///Project(&quot;{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}&quot;) = &quot;%PROJECTNAME%&quot;, &quot;%PROJECTFILE%&quot;, &quot;{%PROJECTGUID%}&quot;
///EndProject
///Global
/// GlobalSection(SolutionConfigurationPlatforms) = preSolution
/// Debug|x64 = Debug|x64
/// Debug|x86 = Debug|x86
/// Release|x64 = Release|x64
/// Release|x86 = Release|x86
/// EndGlobalSection
/// GlobalSection(ProjectConfig [rest of string was truncated]&quot;;.
/// </summary>
internal static string CppSlnTemplate {
get {
return ResourceManager.GetString("CppSlnTemplate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
///&lt;Project ToolsVersion=&quot;4.0&quot; DefaultTargets=&quot;Build&quot; xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&gt;
@@ -80,6 +266,30 @@ namespace Il2CppInspector.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Microsoft Visual Studio Solution File, Format Version 12.00
///# Visual Studio Version 16
///%PROJECTDEFINITIONS%
///Global
/// GlobalSection(SolutionConfigurationPlatforms) = preSolution
/// Debug|Any CPU = Debug|Any CPU
/// Release|Any CPU = Release|Any CPU
/// EndGlobalSection
/// GlobalSection(ProjectConfigurationPlatforms) = postSolution
///%PROJECTCONFIGURATIONS%
/// EndGlobalSection
/// GlobalSection(SolutionProperties) = preSolution
/// HideSolutionNode = FALSE
/// EndGlobalSection
///EndGlobal
///.
/// </summary>
internal static string CsSlnTemplate {
get {
return ResourceManager.GetString("CsSlnTemplate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {%PROJECTGUID%}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
/// {%PROJECTGUID%}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -103,29 +313,5 @@ namespace Il2CppInspector.Properties {
return ResourceManager.GetString("SlnProjectDefinition", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Microsoft Visual Studio Solution File, Format Version 12.00
///# Visual Studio Version 16
///%PROJECTDEFINITIONS%
///Global
/// GlobalSection(SolutionConfigurationPlatforms) = preSolution
/// Debug|Any CPU = Debug|Any CPU
/// Release|Any CPU = Release|Any CPU
/// EndGlobalSection
/// GlobalSection(ProjectConfigurationPlatforms) = postSolution
///%PROJECTCONFIGURATIONS%
/// EndGlobalSection
/// GlobalSection(SolutionProperties) = preSolution
/// HideSolutionNode = FALSE
/// EndGlobalSection
///EndGlobal
///.
/// </summary>
internal static string SlnTemplate {
get {
return ResourceManager.GetString("SlnTemplate", resourceCulture);
}
}
}
}

View File

@@ -117,6 +117,407 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Cpp-DLLMainCpp" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
#include "dllmain.h"
// DLL entry point
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
init_il2cpp();
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) Run, NULL, 0, NULL);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}</value>
</data>
<data name="Cpp-DLLMainH" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
// Entry point declaration for custom injected code
void Run();
// IL2CPP initializer
void init_il2cpp();</value>
</data>
<data name="Cpp-HelpersCpp" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
// Logging functions
#define WIN32_LEAN_AND_MEAN
#define WIN32_EXTRA_LEAN
#include &lt;windows.h&gt;
#include "helpers.h"
// Write some text to the log file
void LogWrite(std::string text)
{
HANDLE hfile = CreateFileW(LOG_FILE, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hfile == INVALID_HANDLE_VALUE)
MessageBox(0, L"Could not open log file", 0, 0);
DWORD written;
WriteFile(hfile, text.c_str(), (DWORD) text.length(), &amp;written, NULL);
WriteFile(hfile, "\r\n", 2, &amp;written, NULL);
CloseHandle(hfile);
}</value>
</data>
<data name="Cpp-HelpersH" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
// Logging functions
#pragma once
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;iomanip&gt;
extern const LPCWSTR LOG_FILE;
// Helper function to append text to a file
void LogWrite(std::string text);
// Helper function to convert a pointer to hex
template&lt;typename T&gt; std::string to_hex_string(T i) {
std::stringstream stream;
stream &lt;&lt; "0x" &lt;&lt; std::setfill('0') &lt;&lt; std::setw(sizeof(T) * 2) &lt;&lt; std::hex &lt;&lt; i;
return stream.str();
}</value>
</data>
<data name="Cpp-IL2CPPInitH" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
// IL2CPP application initializer
#pragma once
#include &lt;cstdint&gt;
// Application-specific types
#include "il2cpp-types.h"
// IL2CPP API function pointers
#include "il2cpp-function-ptr.h"
// IL2CPP APIs
#define DO_API(r, n, p) r (*n) p
#include "il2cpp-api-functions.h"
#undef DO_API
// Application-specific functions
#define DO_APP_FUNC(a, r, n, p) r (*n) p
#include "il2cpp-functions.h"
#undef DO_APP_FUNC
// TypeInfo pointers
#define DO_TYPEDEF(a, n) n ## __Class* n ## __TypeInfo
#include "il2cpp-type-ptr.h"
#undef DO_TYPEDEF
// Try not to include any Windows symbosl that might cause a naming conflict
#define WIN32_LEAN_AND_MEAN
#define WIN32_EXTRA_LEAN
#define NOIME
#define NOWINRES
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINMESSAGES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOMENUS
#define NOICONS
#define NOKEYSTATES
#define NOSYSCOMMANDS
#define NORASTEROPS
#define NOSHOWWINDOW
#define OEMRESOURCE
#define NOATOM
#define NOCLIPBOARD
#define NOCOLOR
#define NOCTLMGR
#define NODRAWTEXT
#define NOGDI
#define NOUSER
#define NOMB
#define NOMEMMGR
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NOSCROLL
#define NOSERVICE
#define NOSOUND
#define NOTEXTMETRIC
#define NOWH
#define NOWINOFFSETS
#define NOCOMM
#define NOKANJI
#define NOHELP
#define NOPROFILER
#define NODEFERWINDOWPOS
#define NOMCX
#define NOIME
#define NOPROXYSTUB
#define NOIMAGE
#define NO
#define NOTAPE
#define ANSI_ONLY
#include "windows.h"
// Initialize everything
void init_il2cpp() {
// Get base address of IL2CPP module
uintptr_t baseAddress = (uintptr_t) GetModuleHandleW(L"GameAssembly.dll");
// Define IL2CPP API function addresses
#define DO_API(r, n, p) n = (r (*) p)(baseAddress + n ## _ptr)
#include "il2cpp-api-functions.h"
#undef DO_API
// Define function addresses
#define DO_APP_FUNC(a, r, n, p) n = (r (*) p)(baseAddress + a)
#include "il2cpp-functions.h"
#undef DO_APP_FUNC
// Define TypeInfo variables
#define DO_TYPEDEF(a, n) n ## __TypeInfo = *(n ## __Class**) (baseAddress + a);
#include "il2cpp-type-ptr.h"
#undef DO_TYPEDEF
}</value>
</data>
<data name="Cpp-MainCpp" xml:space="preserve">
<value>// Generated C++ file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
// Custom injected code entry point
#include "il2cpp-init.h"
#include "helpers.h"
using namespace app;
// Set the name of your log file here
extern const LPCWSTR LOG_FILE = L"il2cpp-log.txt";
// Injected code entry point
void Run()
{
LogWrite("Startup");
// Place your custom code here
}</value>
</data>
<data name="CppProjTemplate" xml:space="preserve">
<value>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;
&lt;ItemGroup Label="ProjectConfigurations"&gt;
&lt;ProjectConfiguration Include="Debug|Win32"&gt;
&lt;Configuration&gt;Debug&lt;/Configuration&gt;
&lt;Platform&gt;Win32&lt;/Platform&gt;
&lt;/ProjectConfiguration&gt;
&lt;ProjectConfiguration Include="Release|Win32"&gt;
&lt;Configuration&gt;Release&lt;/Configuration&gt;
&lt;Platform&gt;Win32&lt;/Platform&gt;
&lt;/ProjectConfiguration&gt;
&lt;ProjectConfiguration Include="Debug|x64"&gt;
&lt;Configuration&gt;Debug&lt;/Configuration&gt;
&lt;Platform&gt;x64&lt;/Platform&gt;
&lt;/ProjectConfiguration&gt;
&lt;ProjectConfiguration Include="Release|x64"&gt;
&lt;Configuration&gt;Release&lt;/Configuration&gt;
&lt;Platform&gt;x64&lt;/Platform&gt;
&lt;/ProjectConfiguration&gt;
&lt;/ItemGroup&gt;
&lt;PropertyGroup Label="Globals"&gt;
&lt;!--&lt;VCProjectVersion&gt;16.0&lt;/VCProjectVersion&gt;--&gt;
&lt;Keyword&gt;Win32Proj&lt;/Keyword&gt;
&lt;ProjectGuid&gt;{%PROJECTGUID%}&lt;/ProjectGuid&gt;
&lt;RootNamespace&gt;Il2CppDLL&lt;/RootNamespace&gt;
&lt;!--&lt;WindowsTargetPlatformVersion&gt;10.0&lt;/WindowsTargetPlatformVersion&gt;--&gt;
&lt;/PropertyGroup&gt;
&lt;Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"&gt;
&lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
&lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
&lt;!--&lt;PlatformToolset&gt;v142&lt;/PlatformToolset&gt;--&gt;
&lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"&gt;
&lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
&lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
&lt;!--&lt;PlatformToolset&gt;v142&lt;/PlatformToolset&gt;--&gt;
&lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
&lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"&gt;
&lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
&lt;UseDebugLibraries&gt;true&lt;/UseDebugLibraries&gt;
&lt;!--&lt;PlatformToolset&gt;v142&lt;/PlatformToolset&gt;--&gt;
&lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"&gt;
&lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;
&lt;UseDebugLibraries&gt;false&lt;/UseDebugLibraries&gt;
&lt;!--&lt;PlatformToolset&gt;v142&lt;/PlatformToolset&gt;--&gt;
&lt;WholeProgramOptimization&gt;true&lt;/WholeProgramOptimization&gt;
&lt;CharacterSet&gt;Unicode&lt;/CharacterSet&gt;
&lt;/PropertyGroup&gt;
&lt;Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /&gt;
&lt;ImportGroup Label="ExtensionSettings"&gt;
&lt;/ImportGroup&gt;
&lt;ImportGroup Label="Shared"&gt;
&lt;/ImportGroup&gt;
&lt;ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"&gt;
&lt;Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /&gt;
&lt;/ImportGroup&gt;
&lt;ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"&gt;
&lt;Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /&gt;
&lt;/ImportGroup&gt;
&lt;ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"&gt;
&lt;Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /&gt;
&lt;/ImportGroup&gt;
&lt;ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"&gt;
&lt;Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /&gt;
&lt;/ImportGroup&gt;
&lt;PropertyGroup Label="UserMacros" /&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"&gt;
&lt;LinkIncremental&gt;true&lt;/LinkIncremental&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"&gt;
&lt;LinkIncremental&gt;false&lt;/LinkIncremental&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"&gt;
&lt;LinkIncremental&gt;true&lt;/LinkIncremental&gt;
&lt;/PropertyGroup&gt;
&lt;PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"&gt;
&lt;LinkIncremental&gt;false&lt;/LinkIncremental&gt;
&lt;/PropertyGroup&gt;
&lt;ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"&gt;
&lt;ClCompile&gt;
&lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;
&lt;SDLCheck&gt;true&lt;/SDLCheck&gt;
&lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;IL2CPPDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
&lt;ConformanceMode&gt;true&lt;/ConformanceMode&gt;
&lt;PrecompiledHeader&gt;NotUsing&lt;/PrecompiledHeader&gt;
&lt;/ClCompile&gt;
&lt;Link&gt;
&lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
&lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
&lt;EnableUAC&gt;false&lt;/EnableUAC&gt;
&lt;/Link&gt;
&lt;/ItemDefinitionGroup&gt;
&lt;ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"&gt;
&lt;ClCompile&gt;
&lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;
&lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;
&lt;IntrinsicFunctions&gt;true&lt;/IntrinsicFunctions&gt;
&lt;SDLCheck&gt;true&lt;/SDLCheck&gt;
&lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;IL2CPPDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
&lt;ConformanceMode&gt;true&lt;/ConformanceMode&gt;
&lt;PrecompiledHeader&gt;NotUsing&lt;/PrecompiledHeader&gt;
&lt;/ClCompile&gt;
&lt;Link&gt;
&lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
&lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
&lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
&lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
&lt;EnableUAC&gt;false&lt;/EnableUAC&gt;
&lt;/Link&gt;
&lt;/ItemDefinitionGroup&gt;
&lt;ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"&gt;
&lt;ClCompile&gt;
&lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;
&lt;SDLCheck&gt;true&lt;/SDLCheck&gt;
&lt;PreprocessorDefinitions&gt;_DEBUG;IL2CPPDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
&lt;ConformanceMode&gt;true&lt;/ConformanceMode&gt;
&lt;PrecompiledHeader&gt;NotUsing&lt;/PrecompiledHeader&gt;
&lt;/ClCompile&gt;
&lt;Link&gt;
&lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
&lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
&lt;EnableUAC&gt;false&lt;/EnableUAC&gt;
&lt;/Link&gt;
&lt;/ItemDefinitionGroup&gt;
&lt;ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"&gt;
&lt;ClCompile&gt;
&lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;
&lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;
&lt;IntrinsicFunctions&gt;true&lt;/IntrinsicFunctions&gt;
&lt;SDLCheck&gt;true&lt;/SDLCheck&gt;
&lt;PreprocessorDefinitions&gt;NDEBUG;IL2CPPDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;
&lt;ConformanceMode&gt;true&lt;/ConformanceMode&gt;
&lt;PrecompiledHeader&gt;NotUsing&lt;/PrecompiledHeader&gt;
&lt;/ClCompile&gt;
&lt;Link&gt;
&lt;SubSystem&gt;Windows&lt;/SubSystem&gt;
&lt;EnableCOMDATFolding&gt;true&lt;/EnableCOMDATFolding&gt;
&lt;OptimizeReferences&gt;true&lt;/OptimizeReferences&gt;
&lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;
&lt;EnableUAC&gt;false&lt;/EnableUAC&gt;
&lt;/Link&gt;
&lt;/ItemDefinitionGroup&gt;
&lt;ItemGroup&gt;
&lt;ClCompile Include="dllmain.cpp" /&gt;
&lt;ClCompile Include="helpers.cpp" /&gt;
&lt;ClCompile Include="main.cpp" /&gt;
&lt;/ItemGroup&gt;
&lt;ItemGroup&gt;
&lt;ClInclude Include="dllmain.h" /&gt;
&lt;ClInclude Include="helpers.h" /&gt;
&lt;ClInclude Include="il2cpp-api-functions.h" /&gt;
&lt;ClInclude Include="il2cpp-init.h" /&gt;
&lt;ClInclude Include="il2cpp-function-ptr.h" /&gt;
&lt;ClInclude Include="il2cpp-functions.h" /&gt;
&lt;ClInclude Include="il2cpp-type-ptr.h" /&gt;
&lt;ClInclude Include="il2cpp-types.h" /&gt;
&lt;/ItemGroup&gt;
&lt;Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /&gt;
&lt;ImportGroup Label="ExtensionTargets"&gt;
&lt;/ImportGroup&gt;
&lt;/Project&gt;</value>
</data>
<data name="CppSlnTemplate" xml:space="preserve">
<value>Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30204.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "%PROJECTNAME%", "%PROJECTFILE%", "{%PROJECTGUID%}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{%PROJECTGUID%}.Debug|x64.ActiveCfg = Debug|x64
{%PROJECTGUID%}.Debug|x64.Build.0 = Debug|x64
{%PROJECTGUID%}.Debug|x86.ActiveCfg = Release|x64
{%PROJECTGUID%}.Debug|x86.Build.0 = Release|x64
{%PROJECTGUID%}.Release|x64.ActiveCfg = Release|x64
{%PROJECTGUID%}.Release|x64.Build.0 = Release|x64
{%PROJECTGUID%}.Release|x86.ActiveCfg = Release|Win32
{%PROJECTGUID%}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {%SOLUTIONGUID%}
EndGlobalSection
EndGlobal</value>
</data>
<data name="CsProjTemplate" xml:space="preserve">
<value>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;
@@ -753,7 +1154,7 @@
EndProject
</value>
</data>
<data name="SlnTemplate" xml:space="preserve">
<data name="CsSlnTemplate" xml:space="preserve">
<value>Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
%PROJECTDEFINITIONS%