Skip to content
This repository was archived by the owner on Dec 31, 2025. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/mod_loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 };
Expand All @@ -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<open_file_stream_proc>(openFileStreamAddress);
if (MH_CreateHook(oldOpenFileStream, &HookOpenFileStream, reinterpret_cast<LPVOID*>(&oldOpenFileStream)) != MH_OK) {
MessageBoxA(NULL, "Failed to create hook for OpenFileStream. Mod loading disabled.", "Dank farrik!", MB_OK | MB_ICONERROR);
Expand Down