diff --git a/NetworkChecksumDisabler.sln b/NetworkChecksumDisabler.sln
new file mode 100644
index 0000000..4059a4f
--- /dev/null
+++ b/NetworkChecksumDisabler.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34330.188
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetworkChecksumDisabler", "NetworkChecksumDisabler.vcxproj", "{8F443B0E-F335-4B0C-ADF6-A83C725FC040}"
+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
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Debug|x64.ActiveCfg = Debug|x64
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Debug|x64.Build.0 = Debug|x64
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Debug|x86.ActiveCfg = Debug|Win32
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Debug|x86.Build.0 = Debug|Win32
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Release|x64.ActiveCfg = Release|x64
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Release|x64.Build.0 = Release|x64
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Release|x86.ActiveCfg = Release|Win32
+ {8F443B0E-F335-4B0C-ADF6-A83C725FC040}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A2C8DC44-41E8-46D8-AF8D-3C803E9EEE6C}
+ EndGlobalSection
+EndGlobal
diff --git a/NetworkChecksumDisabler.vcxproj b/NetworkChecksumDisabler.vcxproj
new file mode 100644
index 0000000..ad9ed42
--- /dev/null
+++ b/NetworkChecksumDisabler.vcxproj
@@ -0,0 +1,153 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 17.0
+ Win32Proj
+ {8f443b0e-f335-4b0c-adf6-a83c725fc040}
+ NetworkChecksumDisabler
+ 10.0
+
+
+
+ DynamicLibrary
+ true
+ v143
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v143
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)Build\$(Platform)\$(Configuration)\
+
+
+ $(SolutionDir)Build\$(Platform)\$(Configuration)\
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;NETWORKCHECKSUMDISABLER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ false
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;NETWORKCHECKSUMDISABLER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ true
+ true
+ false
+
+
+
+
+ Level3
+ true
+ _DEBUG;NETWORKCHECKSUMDISABLER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+ pch.h
+
+
+ Windows
+ true
+ false
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;NETWORKCHECKSUMDISABLER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+ pch.h
+
+
+ Windows
+ true
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NetworkChecksumDisabler.vcxproj.filters b/NetworkChecksumDisabler.vcxproj.filters
new file mode 100644
index 0000000..4dd0cd7
--- /dev/null
+++ b/NetworkChecksumDisabler.vcxproj.filters
@@ -0,0 +1,22 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Source Files
+
+
+
\ No newline at end of file
diff --git a/NetworkChecksumDisabler.vcxproj.user b/NetworkChecksumDisabler.vcxproj.user
new file mode 100644
index 0000000..0f14913
--- /dev/null
+++ b/NetworkChecksumDisabler.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/dllmain.cpp b/dllmain.cpp
new file mode 100644
index 0000000..6181faf
--- /dev/null
+++ b/dllmain.cpp
@@ -0,0 +1,29 @@
+
+#include
+#include
+
+static void Attach() {
+ uint64_t base = uint64_t(GetModuleHandle(0));
+ uint32_t* pAddr = (uint32_t*)(base + 0x407B38 + 0x2);
+
+ DWORD oldProtect;
+ VirtualProtect(pAddr, sizeof(uint32_t), PAGE_EXECUTE_READWRITE, &oldProtect);
+
+ if (*pAddr == uint32_t(0x00001313))
+ *pAddr = uint32_t(0x0000095F);
+
+ VirtualProtect(pAddr, sizeof(uint32_t), oldProtect, &oldProtect);
+}
+
+BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
+ switch (ul_reason_for_call) {
+ case DLL_PROCESS_ATTACH: {
+ Attach();
+ break;
+ }
+ case DLL_PROCESS_DETACH:
+ FreeLibrary(hModule);
+ }
+ return TRUE;
+}
+