aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/sigscanning.cpp
diff options
context:
space:
mode:
authorKittenPopo <Pokeberry123@gmail.com>2022-03-23 13:03:56 -0700
committerGitHub <noreply@github.com>2022-03-23 20:03:56 +0000
commitde7deafc7e6ba53deec8dd3c05d2ea5e7cf42264 (patch)
tree5bc5c82c9b720adbf02cdaeb505f46b48a02178f /NorthstarDedicatedTest/sigscanning.cpp
parent5893c7700653e5f3d51c4f7eba7f6f25a2fe5be7 (diff)
downloadNorthstarLauncher-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/sigscanning.cpp')
-rw-r--r--NorthstarDedicatedTest/sigscanning.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/NorthstarDedicatedTest/sigscanning.cpp b/NorthstarDedicatedTest/sigscanning.cpp
index c75c80f0..761f9f08 100644
--- a/NorthstarDedicatedTest/sigscanning.cpp
+++ b/NorthstarDedicatedTest/sigscanning.cpp
@@ -5,7 +5,7 @@
// note: sigscanning is only really intended to be used for resolving stuff like shared function definitions
// we mostly use raw function addresses for stuff
-size_t GetDLLLength(HMODULE moduleHandle)
+size_t GetModuleLength(HMODULE moduleHandle)
{
// based on sigscn code from ttf2sdk, which is in turn based on CSigScan from https://wiki.alliedmods.net/Signature_Scanning
MEMORY_BASIC_INFORMATION mem;
@@ -19,12 +19,14 @@ size_t GetDLLLength(HMODULE moduleHandle)
void* FindSignature(std::string dllName, const char* sig, const char* mask)
{
- HMODULE dllAddress = GetModuleHandleA(dllName.c_str());
- char* dllEnd = (char*)(dllAddress + GetDLLLength(dllAddress));
+ HMODULE module = GetModuleHandleA(dllName.c_str());
+
+ unsigned char* dllAddress = (unsigned char*)module;
+ unsigned char* dllEnd = dllAddress + GetModuleLength(module);
size_t sigLength = strlen(mask);
- for (char* i = (char*)dllAddress; i < dllEnd - sigLength; i++)
+ for (auto i = dllAddress; i < dllEnd - sigLength + 1; i++)
{
int j = 0;
for (; j < sigLength; j++)
@@ -32,7 +34,7 @@ void* FindSignature(std::string dllName, const char* sig, const char* mask)
break;
if (j == sigLength) // loop finished of its own accord
- return (void*)i;
+ return i;
}
return nullptr;