diff options
author | KittenPopo <Pokeberry123@gmail.com> | 2022-03-23 13:03:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-23 20:03:56 +0000 |
commit | de7deafc7e6ba53deec8dd3c05d2ea5e7cf42264 (patch) | |
tree | 5bc5c82c9b720adbf02cdaeb505f46b48a02178f /NorthstarDedicatedTest/playlist.cpp | |
parent | 5893c7700653e5f3d51c4f7eba7f6f25a2fe5be7 (diff) | |
download | NorthstarLauncher-de7deafc7e6ba53deec8dd3c05d2ea5e7cf42264.tar.gz NorthstarLauncher-de7deafc7e6ba53deec8dd3c05d2ea5e7cf42264.zip |
Implement KittenPopo exploit fixes (and sanity changes) (#112)
* Added main exploit fixes
* Fixed typo in sigscanning.cpp
* Fully implemented
* Added proper includes for new files
* Update README.md
* typo
* spare me my sanity (fixed ridiculous code)
* Added rest of KittenMemUtils
* Rename KittenMemUtils
* Removed all messy memory edits, implemented NSMem instead
* Update NorthstarDedicatedTest.vcxproj
* [1] Move everything from securitypatches to ExploitFixes
* [2] Move everything from securitypatches to ExploitFixes
* Fixed module offsets in stack trace
* Fixed UTF8 Parsing (Multiplayer Crash)
* Implemented UT8 fix
* Update NorthstarDedicatedTest.vcxproj
* Update hookutils.cpp
* Small fixes
* all my homies hate clang-format
* Temporarily restore README.md
Diffstat (limited to 'NorthstarDedicatedTest/playlist.cpp')
-rw-r--r-- | NorthstarDedicatedTest/playlist.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/NorthstarDedicatedTest/playlist.cpp b/NorthstarDedicatedTest/playlist.cpp index 7f06844f..a0a2dc33 100644 --- a/NorthstarDedicatedTest/playlist.cpp +++ b/NorthstarDedicatedTest/playlist.cpp @@ -71,6 +71,7 @@ int GetCurrentGamemodeMaxPlayersHook() return maxPlayers; } +#include "NSMem.h" void InitialisePlaylistHooks(HMODULE baseAddress) { RegisterConCommand("setplaylist", SetPlaylistCommand, "Sets the current playlist", FCVAR_NONE); @@ -92,21 +93,16 @@ void InitialisePlaylistHooks(HMODULE baseAddress) ENABLER_CREATEHOOK( hook, (char*)baseAddress + 0x18C430, &GetCurrentGamemodeMaxPlayersHook, reinterpret_cast<LPVOID*>(&GetCurrentGamemodeMaxPlayers)); + uintptr_t ba = (uintptr_t)baseAddress; + // patch to prevent clc_SetPlaylistVarOverride from being able to crash servers if we reach max overrides due to a call to Error (why is // this possible respawn, wtf) todo: add a warning for this { - void* ptr = (char*)baseAddress + 0x18ED8D; - TempReadWrite rw(ptr); - *((char*)ptr) = (char)0xC3; // jmp => ret + NSMem::BytePatch(ba + 0x18ED8D, { + 0xC3 // jmp => ret + }); } // patch to allow setplaylistvaroverride to be called before map init on dedicated and private match launched through the game - void* ptr = (char*)baseAddress + 0x18ED17; - TempReadWrite rw(ptr); - *((char*)ptr) = (char)0x90; - *((char*)ptr + 1) = (char)0x90; - *((char*)ptr + 2) = (char)0x90; - *((char*)ptr + 3) = (char)0x90; - *((char*)ptr + 4) = (char)0x90; - *((char*)ptr + 5) = (char)0x90; + NSMem::NOP(ba + 0x18ED17, 6); } |