From 99a2763d785c57ec7fe5c0d37fc1b31d30845c78 Mon Sep 17 00:00:00 2001 From: TimmieDevelops <79818585+TimmieDevelops@users.noreply.github.com> Date: Tue, 3 Feb 2026 01:09:14 -0600 Subject: [PATCH] [+] ProcessEvent VTable --- Core/Memory/PatternScanner.cpp | 23 +++++++++++++++++++++++ Core/Memory/PatternScanner.h | 1 + Core/Versioning/VersionResolver.cpp | 8 ++++---- Core/Versioning/VersionResolver.h | 2 +- Entry/DllMain.cpp | 3 +++ external/memcury/memcury.h | 2 +- 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/Core/Memory/PatternScanner.cpp b/Core/Memory/PatternScanner.cpp index 509eec8..86cd876 100644 --- a/Core/Memory/PatternScanner.cpp +++ b/Core/Memory/PatternScanner.cpp @@ -14,3 +14,26 @@ uintptr_t PatternScanner::FindGetEngineVersion() return Results.Get(); } + +uintptr_t PatternScanner::FindProcessEvent() +{ + auto Results = Memcury::Scanner::FindStringRef(L"BadProperty"); + if (!Results.IsValid()) + return 0; + + uintptr_t Address = Results.Get(); + uint8_t* Ptr = reinterpret_cast(Address); + + for (int i = 0; i < 0x500; i++) + { + Ptr--; + + if (Ptr[0] == 0xFF && Ptr[1] == 0x90) + { + int32_t Offset = *reinterpret_cast(Ptr + 2); + return static_cast(Offset / 8); + } + } + + return 0; +} diff --git a/Core/Memory/PatternScanner.h b/Core/Memory/PatternScanner.h index d1dafe8..7336ffc 100644 --- a/Core/Memory/PatternScanner.h +++ b/Core/Memory/PatternScanner.h @@ -9,4 +9,5 @@ public: static PatternScanner* Get(); public: uintptr_t FindGetEngineVersion(); + uintptr_t FindProcessEvent(); }; \ No newline at end of file diff --git a/Core/Versioning/VersionResolver.cpp b/Core/Versioning/VersionResolver.cpp index 7538d13..37929a1 100644 --- a/Core/Versioning/VersionResolver.cpp +++ b/Core/Versioning/VersionResolver.cpp @@ -255,10 +255,10 @@ namespace USS { USS_LOG("Version detected from CL mapping"); } - else if (TryDetectFromPatterns()) + /*else if (TryDetectFromPatterns()) { USS_LOG("Version detected from memory patterns"); - } + }*/ else { USS_ERROR("Failed to detect version"); @@ -417,7 +417,7 @@ namespace USS return MapCLToVersion(CL); } - bool FVersionResolver::TryDetectFromPatterns() + /*bool FVersionResolver::TryDetectFromPatterns() { // Try to detect version from characteristic patterns @@ -486,7 +486,7 @@ namespace USS m_VersionInfo.FortniteCL = 3724489; return true; - } + }*/ bool FVersionResolver::MapCLToVersion(uint32 CL) { diff --git a/Core/Versioning/VersionResolver.h b/Core/Versioning/VersionResolver.h index 6ef6dcb..f17ee6e 100644 --- a/Core/Versioning/VersionResolver.h +++ b/Core/Versioning/VersionResolver.h @@ -52,7 +52,7 @@ namespace USS private: bool TryDetectFromVersionInfo(); bool TryDetectFromCL(); - bool TryDetectFromPatterns(); + //bool TryDetectFromPatterns(); bool MapCLToVersion(uint32 CL); void ComputeFeatureFlags(); diff --git a/Entry/DllMain.cpp b/Entry/DllMain.cpp index 1e8ced7..9a8c6f7 100644 --- a/Entry/DllMain.cpp +++ b/Entry/DllMain.cpp @@ -31,6 +31,7 @@ #include "../STW/Missions/MissionManager.h" #include "../STW/Inventory/InventoryManager.h" #include "../STW/Building/BuildingManager.h" +#include "../Core/Memory/PatternScanner.h" #include #include @@ -261,6 +262,8 @@ namespace USS USS_LOG("TObjectPtr: %s", Version.bUseTObjectPtr ? "Yes" : "No"); USS_LOG(""); + //printf("0x%llX\n", (unsigned long long)PatternScanner::Get()->FindProcessEvent()); + // Initialize STW systems USS_LOG("Initializing STW systems..."); diff --git a/external/memcury/memcury.h b/external/memcury/memcury.h index 10c5bf8..2671b56 100644 --- a/external/memcury/memcury.h +++ b/external/memcury/memcury.h @@ -824,7 +824,7 @@ namespace Memcury } } - MemcuryAssertM(add != 0, "FindStringRef return nullptr"); + //MemcuryAssertM(add != 0, "FindStringRef return nullptr"); return Scanner(add); }