aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmma Miler <27428383+emma-miler@users.noreply.github.com>2022-06-15 01:10:39 +0200
committerGitHub <noreply@github.com>2022-06-15 01:10:39 +0200
commitd9f39f14fa0b0e8d025a8deef1d0c85da89c31f6 (patch)
treef592344f35a3aac50109170a4f1aae08b341f686
parentc5725b7855ea211af05963d5b5c8217a906dd9f9 (diff)
downloadNorthstarLauncher-1.8.1-rc2.tar.gz
NorthstarLauncher-1.8.1-rc2.zip
Fix bug where emit wouldn't be blocked if uppercase (#192)v1.8.1-rc2
* Fix bug where emit wouldnt be blocked if uppercase * Moved emit blocker to ExploitFixes.cpp * Format change * Use `strnicmp` instead of a custom functions * Resolve merge conflicts * Format changes
-rw-r--r--NorthstarDedicatedTest/ExploitFixes.cpp19
-rw-r--r--NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj1
-rw-r--r--NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters3
-rw-r--r--NorthstarDedicatedTest/dllmain.cpp1
-rw-r--r--NorthstarDedicatedTest/emit_blocker.cpp26
5 files changed, 19 insertions, 31 deletions
diff --git a/NorthstarDedicatedTest/ExploitFixes.cpp b/NorthstarDedicatedTest/ExploitFixes.cpp
index 277475f6..af7d48ac 100644
--- a/NorthstarDedicatedTest/ExploitFixes.cpp
+++ b/NorthstarDedicatedTest/ExploitFixes.cpp
@@ -5,6 +5,9 @@
#include "NSMem.h"
#include "cvar.h"
+typedef char(__fastcall* function_containing_emit_t)(uint64_t a1, uint64_t a2);
+function_containing_emit_t function_containing_emit;
+ConVar* sv_cheats;
ConVar* ns_exploitfixes_log;
#define SHOULD_LOG (ns_exploitfixes_log->m_Value.m_nValue > 0)
#define BLOCKED_INFO(s) \
@@ -409,6 +412,18 @@ void DoBytePatches()
}
}
+char function_containing_emit_hook(uint64_t unknown_value, uint64_t command_ptr)
+{
+ char* command_string = *(char**)(command_ptr + 1040); // From decompile
+
+ if (!sv_cheats->m_Value.m_nValue && !_strnicmp(command_string, "emit", 5))
+ {
+ spdlog::info("Blocking command \"emit\" because sv_cheats was 0");
+ return 1;
+ }
+ return function_containing_emit(unknown_value, command_ptr);
+}
+
void ExploitFixes::LoadCallback(HMODULE baseAddress)
{
spdlog::info("ExploitFixes::LoadCallback ...");
@@ -433,5 +448,9 @@ void ExploitFixes::LoadCallback(HMODULE baseAddress)
new ConVar("ns_exploitfixes_log", "1", FCVAR_GAMEDLL, "Whether to log whenever ExploitFixes.cpp blocks/corrects something");
HookEnabler hook;
+
+ sv_cheats = g_pCVar->FindVar("sv_cheats");
+ ENABLER_CREATEHOOK(
+ hook, (char*)baseAddress + 0x5889A0, &function_containing_emit_hook, reinterpret_cast<LPVOID*>(&function_containing_emit));
ENABLER_CREATEHOOK(hook, (char*)baseAddress + 0x2a8a50, &GetEntByIndexHook, reinterpret_cast<LPVOID*>(&GetEntByIndex));
}
diff --git a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj
index cddbd3a7..5a7c9529 100644
--- a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj
+++ b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj
@@ -587,7 +587,6 @@
<ClCompile Include="dedicated.cpp" />
<ClCompile Include="dedicatedmaterialsystem.cpp" />
<ClCompile Include="dllmain.cpp" />
- <ClCompile Include="emit_blocker.cpp" />
<ClCompile Include="filesystem.cpp" />
<ClCompile Include="gameutils.cpp" />
<ClCompile Include="hooks.cpp" />
diff --git a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
index 8e429c9f..81dc3817 100644
--- a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
+++ b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
@@ -1685,9 +1685,6 @@
<ClCompile Include="clientruihooks.cpp">
<Filter>Source Files\Client</Filter>
</ClCompile>
- <ClCompile Include="emit_blocker.cpp">
- <Filter>Source Files\Shared\Exploit Fixes</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<MASM Include="audio_asm.asm">
diff --git a/NorthstarDedicatedTest/dllmain.cpp b/NorthstarDedicatedTest/dllmain.cpp
index 98ac97bd..5e747ec5 100644
--- a/NorthstarDedicatedTest/dllmain.cpp
+++ b/NorthstarDedicatedTest/dllmain.cpp
@@ -289,7 +289,6 @@ bool InitialiseNorthstar()
// activate exploit fixes
AddDllLoadCallback("server.dll", ExploitFixes::LoadCallback);
- AddDllLoadCallback("server.dll", InitialiseServerEmit_Blocker);
// run callbacks for any libraries that are already loaded by now
CallAllPendingDLLLoadCallbacks();
diff --git a/NorthstarDedicatedTest/emit_blocker.cpp b/NorthstarDedicatedTest/emit_blocker.cpp
deleted file mode 100644
index 3f996c69..00000000
--- a/NorthstarDedicatedTest/emit_blocker.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "pch.h"
-#include "cvar.h"
-
-ConVar* sv_cheats;
-
-typedef char(__fastcall* function_containing_emit_t)(uint64_t a1, uint64_t a2);
-function_containing_emit_t function_containing_emit;
-
-char function_containing_emit_hook(uint64_t unknown_value, uint64_t command_ptr)
-{
- char* command_string = *(char**)(command_ptr + 1040); // From decompile
- if (!sv_cheats->m_Value.m_nValue && !strncmp(command_string, "emit", 5))
- {
- spdlog::info("Blocking command \"emit\" because sv_cheats was 0");
- return 1;
- }
- return function_containing_emit(unknown_value, command_ptr);
-}
-
-void InitialiseServerEmit_Blocker(HMODULE baseAddress)
-{
- HookEnabler hook;
- sv_cheats = g_pCVar->FindVar("sv_cheats");
- ENABLER_CREATEHOOK(
- hook, (char*)baseAddress + 0x5889A0, &function_containing_emit_hook, reinterpret_cast<LPVOID*>(&function_containing_emit));
-} \ No newline at end of file