diff --git a/src/mod_loader.cpp b/src/mod_loader.cpp index 23afb0b..516de47 100644 --- a/src/mod_loader.cpp +++ b/src/mod_loader.cpp @@ -10,11 +10,13 @@ bool __fastcall ModLoader::HookOpenFileStream(uintptr_t stream, LPCSTR file_path if (Utilities::Files::LocalFileExists(file_path)) { flags |= (1 << 0xA); } + return oldOpenFileStream(stream, file_path, flags); } bool ModLoader::Enable() { if (!Settings::EnableMods) return false; + if (Utilities::Processes::IsGameAvatar()) { pattern_size = 26; pattern = new unsigned char[pattern_size] { 0x48, 0x89, 0x5C, 0x24, 0x00, 0x55, 0x56, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8B, 0xF8 }; @@ -24,12 +26,12 @@ bool ModLoader::Enable() { pattern = new unsigned char[pattern_size] { 0x4C, 0x8B, 0xDC, 0x53, 0x57, 0x41, 0x54, 0x48, 0x81, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8B, 0xD8 }; mask = new unsigned char[pattern_size] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF }; } + uintptr_t openFileStreamAddress = Utilities::Processes::FindPatternAddressMask(pattern, mask, pattern_size); if (!openFileStreamAddress) { MessageBoxA(NULL, "OpenFileStream pattern not found. Mod loading disabled.", "Dank farrik!", MB_OK | MB_ICONERROR); return false; } - oldOpenFileStream = reinterpret_cast(openFileStreamAddress); if (MH_CreateHook(oldOpenFileStream, &HookOpenFileStream, reinterpret_cast(&oldOpenFileStream)) != MH_OK) { MessageBoxA(NULL, "Failed to create hook for OpenFileStream. Mod loading disabled.", "Dank farrik!", MB_OK | MB_ICONERROR);