1.
dnSpy
2.
Visual Studio 2022
3.
BepInEx IL2CPP (v6+)
1.
2.
3.
Steam Console
download_depot 2027330 2027331 3348281417896630206
1.
2.
3.
C# — Main Plugin
using BepInEx; using BepInEx.Unity.IL2CPP; using HarmonyLib; using Photon.Pun; using PlayFab; using PlayFab.ClientModels; using UnityEngine.Networking; namespace GoreBoxMain { [BepInPlugin("GoreBox", "GoreBoxMain", "1.0")] public class GoreBoxClass : BasePlugin { public override void Load() { Harmony harmony = new Harmony("Harmony"); harmony.PatchAll(); } [HarmonyPatch(typeof(VersionValidator), "YOUR_METHOD_NAME_HERE")] public static class VersionValPatch { private static bool Prefix(VersionValidator __instance) { // Replace Photon credentials with your own PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime = "YOUR_PHOTON_APP_ID"; PhotonNetwork.PhotonServerSettings.AppSettings.AppIdVoice = "YOUR_PHOTON_VOICE_ID"; // Replace PlayFab credentials with your own PlayFabSettings.PlayFabSharedPrivate.TitleId = "YOUR_TITLE_ID"; PlayFabSettings.PlayFabSharedPrivate.ProductionEnvironmentUrl = "https://YOUR_TITLE_ID.playfabapi.com"; LoginWithCustomIDRequest loginRequest = new LoginWithCustomIDRequest { CreateAccount = new Il2CppSystem.Nullable<bool>(true), CustomId = UnityEngine.SystemInfo.deviceUniqueIdentifier }; System.Action<LoginResult> onSuccess = delegate (LoginResult result) { __instance.LoginResult(result); // Find correct LoginResult in dnSpy }; System.Action<PlayFabError> onError = delegate (PlayFabError err) { __instance.PlayFabError(err); // Find correct PlayFabError in dnSpy }; PlayFabClientAPI.LoginWithCustomID(loginRequest, onSuccess, onError, null, null); return false; // Skip the original method } } } }
1.
2.
3.







1.
Visual Studio 2022
2.
IL2CPPDumper
C++ — V14 version.dll
// GoreBox V14 — Private Server Multiplayer + Steam Bypass #include <cstdio> #include <string> #include <iostream> #include <windows.h> #include "Minhook.h" #pragma comment(linker, "/NODEFAULTLIB:LIBCMT") #define PROXY_OUT(func) __pragma(comment(linker, "/export:" #func "=My" #func)) PROXY_OUT(GetFileVersionInfoA) PROXY_OUT(GetFileVersionInfoByHandle) PROXY_OUT(GetFileVersionInfoExA) PROXY_OUT(GetFileVersionInfoExW) PROXY_OUT(GetFileVersionInfoSizeA) PROXY_OUT(GetFileVersionInfoSizeExA) PROXY_OUT(GetFileVersionInfoSizeExW) PROXY_OUT(GetFileVersionInfoSizeW) PROXY_OUT(GetFileVersionInfoW) PROXY_OUT(VerFindFileA) PROXY_OUT(VerFindFileW) PROXY_OUT(VerInstallFileA) PROXY_OUT(VerInstallFileW) PROXY_OUT(VerLanguageNameA) PROXY_OUT(VerLanguageNameW) PROXY_OUT(VerQueryValueA) PROXY_OUT(VerQueryValueW) BOOL(WINAPI* o_GetFileVersionInfoA)(LPCSTR, DWORD, DWORD, LPVOID) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoByHandle)(DWORD, HANDLE, LPVOID, DWORD) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoExA)(DWORD, LPCSTR, DWORD, DWORD, LPVOID) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoExW)(DWORD, LPCWSTR, DWORD, DWORD, LPVOID) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeA)(LPCSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeExA)(DWORD, LPCSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeExW)(DWORD, LPCWSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeW)(LPCWSTR, LPDWORD) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoW)(LPCWSTR, DWORD, DWORD, LPVOID) = nullptr; DWORD(WINAPI* o_VerFindFileA)(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerFindFileW)(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerInstallFileA)(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerInstallFileW)(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerLanguageNameA)(DWORD, LPSTR, DWORD) = nullptr; DWORD(WINAPI* o_VerLanguageNameW)(DWORD, LPWSTR, DWORD) = nullptr; BOOL(WINAPI* o_VerQueryValueA)(LPCVOID, LPCSTR, LPVOID*, PUINT) = nullptr; BOOL(WINAPI* o_VerQueryValueW)(LPCVOID, LPCWSTR, LPVOID*, PUINT) = nullptr; extern "C" { BOOL WINAPI MyGetFileVersionInfoA(LPCSTR l, DWORD d1, DWORD d2, LPVOID p) { return o_GetFileVersionInfoA ? o_GetFileVersionInfoA(l, d1, d2, p) : FALSE; } BOOL WINAPI MyGetFileVersionInfoByHandle(DWORD d1, HANDLE h, LPVOID p, DWORD d2) { return o_GetFileVersionInfoByHandle ? o_GetFileVersionInfoByHandle(d1, h, p, d2) : FALSE; } BOOL WINAPI MyGetFileVersionInfoExA(DWORD d1, LPCSTR l, DWORD d2, DWORD d3, LPVOID p) { return o_GetFileVersionInfoExA ? o_GetFileVersionInfoExA(d1, l, d2, d3, p) : FALSE; } BOOL WINAPI MyGetFileVersionInfoExW(DWORD d1, LPCWSTR l, DWORD d2, DWORD d3, LPVOID p) { return o_GetFileVersionInfoExW ? o_GetFileVersionInfoExW(d1, l, d2, d3, p) : FALSE; } DWORD WINAPI MyGetFileVersionInfoSizeA(LPCSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeA ? o_GetFileVersionInfoSizeA(l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeExA(DWORD d, LPCSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeExA ? o_GetFileVersionInfoSizeExA(d, l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeExW(DWORD d, LPCWSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeExW ? o_GetFileVersionInfoSizeExW(d, l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeW(LPCWSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeW ? o_GetFileVersionInfoSizeW(l, p) : 0; } BOOL WINAPI MyGetFileVersionInfoW(LPCWSTR l, DWORD d1, DWORD d2, LPVOID p) { return o_GetFileVersionInfoW ? o_GetFileVersionInfoW(l, d1, d2, p) : FALSE; } DWORD WINAPI MyVerFindFileA(DWORD d, LPCSTR l1, LPCSTR l2, LPCSTR l3, LPSTR l4, PUINT p1, LPSTR l5, PUINT p2) { return o_VerFindFileA ? o_VerFindFileA(d, l1, l2, l3, l4, p1, l5, p2) : 0; } DWORD WINAPI MyVerFindFileW(DWORD d, LPCWSTR l1, LPCWSTR l2, LPCWSTR l3, LPWSTR l4, PUINT p1, LPWSTR l5, PUINT p2) { return o_VerFindFileW ? o_VerFindFileW(d, l1, l2, l3, l4, p1, l5, p2) : 0; } DWORD WINAPI MyVerInstallFileA(DWORD d, LPCSTR l1, LPCSTR l2, LPCSTR l3, LPCSTR l4, LPCSTR l5, LPSTR l6, PUINT p) { return o_VerInstallFileA ? o_VerInstallFileA(d, l1, l2, l3, l4, l5, l6, p) : 0; } DWORD WINAPI MyVerInstallFileW(DWORD d, LPCWSTR l1, LPCWSTR l2, LPCWSTR l3, LPCWSTR l4, LPCWSTR l5, LPSTR l6, PUINT p) { return o_VerInstallFileW ? o_VerInstallFileW(d, l1, l2, l3, l4, l5, l6, p) : 0; } DWORD WINAPI MyVerLanguageNameA(DWORD d, LPSTR l, DWORD d2) { return o_VerLanguageNameA ? o_VerLanguageNameA(d, l, d2) : 0; } DWORD WINAPI MyVerLanguageNameW(DWORD d, LPWSTR l, DWORD d2) { return o_VerLanguageNameW ? o_VerLanguageNameW(d, l, d2) : 0; } BOOL WINAPI MyVerQueryValueA(LPCVOID p, LPCSTR l, LPVOID* lp, PUINT pu) { return o_VerQueryValueA ? o_VerQueryValueA(p, l, lp, pu) : FALSE; } BOOL WINAPI MyVerQueryValueW(LPCVOID p, LPCWSTR l, LPVOID* lp, PUINT pu) { return o_VerQueryValueW ? o_VerQueryValueW(p, l, lp, pu) : FALSE; } } void SetupProxy() { char sysPath[MAX_PATH]; GetSystemDirectoryA(sysPath, MAX_PATH); HMODULE hReal = LoadLibraryA((std::string(sysPath) + "\version.dll").c_str()); if (!hReal) return; o_GetFileVersionInfoA = (decltype(o_GetFileVersionInfoA)) GetProcAddress(hReal, "GetFileVersionInfoA"); o_GetFileVersionInfoByHandle= (decltype(o_GetFileVersionInfoByHandle))GetProcAddress(hReal, "GetFileVersionInfoByHandle"); o_GetFileVersionInfoExA = (decltype(o_GetFileVersionInfoExA)) GetProcAddress(hReal, "GetFileVersionInfoExA"); o_GetFileVersionInfoExW = (decltype(o_GetFileVersionInfoExW)) GetProcAddress(hReal, "GetFileVersionInfoExW"); o_GetFileVersionInfoSizeA = (decltype(o_GetFileVersionInfoSizeA)) GetProcAddress(hReal, "GetFileVersionInfoSizeA"); o_GetFileVersionInfoSizeExA = (decltype(o_GetFileVersionInfoSizeExA))GetProcAddress(hReal, "GetFileVersionInfoSizeExA"); o_GetFileVersionInfoSizeExW = (decltype(o_GetFileVersionInfoSizeExW))GetProcAddress(hReal, "GetFileVersionInfoSizeExW"); o_GetFileVersionInfoSizeW = (decltype(o_GetFileVersionInfoSizeW)) GetProcAddress(hReal, "GetFileVersionInfoSizeW"); o_GetFileVersionInfoW = (decltype(o_GetFileVersionInfoW)) GetProcAddress(hReal, "GetFileVersionInfoW"); o_VerFindFileA = (decltype(o_VerFindFileA)) GetProcAddress(hReal, "VerFindFileA"); o_VerFindFileW = (decltype(o_VerFindFileW)) GetProcAddress(hReal, "VerFindFileW"); o_VerInstallFileA = (decltype(o_VerInstallFileA))GetProcAddress(hReal, "VerInstallFileA"); o_VerInstallFileW = (decltype(o_VerInstallFileW))GetProcAddress(hReal, "VerInstallFileW"); o_VerLanguageNameA= (decltype(o_VerLanguageNameA))GetProcAddress(hReal,"VerLanguageNameA"); o_VerLanguageNameW= (decltype(o_VerLanguageNameW))GetProcAddress(hReal,"VerLanguageNameW"); o_VerQueryValueA = (decltype(o_VerQueryValueA)) GetProcAddress(hReal, "VerQueryValueA"); o_VerQueryValueW = (decltype(o_VerQueryValueW)) GetProcAddress(hReal, "VerQueryValueW"); } uintptr_t GameAssembly = 0; uintptr_t offset_ConnectUsingSettings = 0x0; // PhotonNetwork$$ConnectUsingSettings — from IL2CPPDumper uintptr_t offset_SteamDetect_Awake = 0x0; // SteamDetection$$Awake — from IL2CPPDumper struct Il2CppString { void* k; void* m; int32_t len; wchar_t chars[1]; }; using il2cpp_string_new_t = Il2CppString* (*)(const char*); il2cpp_string_new_t il2cpp_string_new = nullptr; template <typename T> void WriteMem(uintptr_t addr, T val) { DWORD old; VirtualProtect((LPVOID)addr, sizeof(T), PAGE_EXECUTE_READWRITE, &old); *(T*)addr = val; VirtualProtect((LPVOID)addr, sizeof(T), old, &old); } using o_photon_hook_t = void(*)(void*, bool, void*); o_photon_hook_t o_photon_hook = nullptr; void photon_hook(void* _appSettings, bool startInOfflineMode, void* mi) { if (_appSettings && il2cpp_string_new != nullptr) { WriteMem<uintptr_t>((uintptr_t)_appSettings + 0x10, (uintptr_t)il2cpp_string_new("")); // PUN2 App ID WriteMem<uintptr_t>((uintptr_t)_appSettings + 0x28, (uintptr_t)il2cpp_string_new("")); // Voice App ID } return o_photon_hook(_appSettings, startInOfflineMode, mi); } // V14 extra: bypass the Steam ownership check using o_steam_hook_t = void(*)(void*, void*); o_steam_hook_t o_steam_hook = nullptr; void* steam_hook(void* __this, void* mi) { return nullptr; // Nulls out Awake — skips Steam check entirely } void Main() { while (!(GameAssembly = (uintptr_t)GetModuleHandleA("GameAssembly.dll"))) { Sleep(200); } HMODULE hGA = (HMODULE)GameAssembly; il2cpp_string_new = (il2cpp_string_new_t)GetProcAddress(hGA, "il2cpp_string_new"); MH_Initialize(); uintptr_t targetAddr = GameAssembly + offset_ConnectUsingSettings; uintptr_t targetAddr2 = GameAssembly + offset_SteamDetect_Awake; if (MH_CreateHook((LPVOID)targetAddr, (LPVOID)&photon_hook, (LPVOID*)&o_photon_hook) == MH_OK) MH_EnableHook((LPVOID)targetAddr); if (MH_CreateHook((LPVOID)targetAddr2, (LPVOID)&steam_hook, (LPVOID*)&o_steam_hook) == MH_OK) MH_EnableHook((LPVOID)targetAddr2); } BOOL APIENTRY DllMain(HMODULE hMod, DWORD reason, LPVOID lpRes) { if (reason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hMod); SetupProxy(); CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Main, 0, 0, 0); } return TRUE; }
1.
2.
3.
1.
Visual Studio 2022
2.
IL2CPPDumper
C++ — V13 version.dll
// GoreBox V13 — Private Server Multiplayer Hook #include <cstdio> #include <string> #include <iostream> #include <windows.h> #include "Minhook.h" #pragma comment(linker, "/NODEFAULTLIB:LIBCMT") #define PROXY_OUT(func) __pragma(comment(linker, "/export:" #func "=My" #func)) PROXY_OUT(GetFileVersionInfoA) PROXY_OUT(GetFileVersionInfoByHandle) PROXY_OUT(GetFileVersionInfoExA) PROXY_OUT(GetFileVersionInfoExW) PROXY_OUT(GetFileVersionInfoSizeA) PROXY_OUT(GetFileVersionInfoSizeExA) PROXY_OUT(GetFileVersionInfoSizeExW) PROXY_OUT(GetFileVersionInfoSizeW) PROXY_OUT(GetFileVersionInfoW) PROXY_OUT(VerFindFileA) PROXY_OUT(VerFindFileW) PROXY_OUT(VerInstallFileA) PROXY_OUT(VerInstallFileW) PROXY_OUT(VerLanguageNameA) PROXY_OUT(VerLanguageNameW) PROXY_OUT(VerQueryValueA) PROXY_OUT(VerQueryValueW) BOOL(WINAPI* o_GetFileVersionInfoA)(LPCSTR, DWORD, DWORD, LPVOID) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoByHandle)(DWORD, HANDLE, LPVOID, DWORD) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoExA)(DWORD, LPCSTR, DWORD, DWORD, LPVOID) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoExW)(DWORD, LPCWSTR, DWORD, DWORD, LPVOID) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeA)(LPCSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeExA)(DWORD, LPCSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeExW)(DWORD, LPCWSTR, LPDWORD) = nullptr; DWORD(WINAPI* o_GetFileVersionInfoSizeW)(LPCWSTR, LPDWORD) = nullptr; BOOL(WINAPI* o_GetFileVersionInfoW)(LPCWSTR, DWORD, DWORD, LPVOID) = nullptr; DWORD(WINAPI* o_VerFindFileA)(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerFindFileW)(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerInstallFileA)(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerInstallFileW)(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPSTR, PUINT) = nullptr; DWORD(WINAPI* o_VerLanguageNameA)(DWORD, LPSTR, DWORD) = nullptr; DWORD(WINAPI* o_VerLanguageNameW)(DWORD, LPWSTR, DWORD) = nullptr; BOOL(WINAPI* o_VerQueryValueA)(LPCVOID, LPCSTR, LPVOID*, PUINT) = nullptr; BOOL(WINAPI* o_VerQueryValueW)(LPCVOID, LPCWSTR, LPVOID*, PUINT) = nullptr; extern "C" { BOOL WINAPI MyGetFileVersionInfoA(LPCSTR l, DWORD d1, DWORD d2, LPVOID p) { return o_GetFileVersionInfoA ? o_GetFileVersionInfoA(l, d1, d2, p) : FALSE; } BOOL WINAPI MyGetFileVersionInfoByHandle(DWORD d1, HANDLE h, LPVOID p, DWORD d2) { return o_GetFileVersionInfoByHandle ? o_GetFileVersionInfoByHandle(d1, h, p, d2) : FALSE; } BOOL WINAPI MyGetFileVersionInfoExA(DWORD d1, LPCSTR l, DWORD d2, DWORD d3, LPVOID p) { return o_GetFileVersionInfoExA ? o_GetFileVersionInfoExA(d1, l, d2, d3, p) : FALSE; } BOOL WINAPI MyGetFileVersionInfoExW(DWORD d1, LPCWSTR l, DWORD d2, DWORD d3, LPVOID p) { return o_GetFileVersionInfoExW ? o_GetFileVersionInfoExW(d1, l, d2, d3, p) : FALSE; } DWORD WINAPI MyGetFileVersionInfoSizeA(LPCSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeA ? o_GetFileVersionInfoSizeA(l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeExA(DWORD d, LPCSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeExA ? o_GetFileVersionInfoSizeExA(d, l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeExW(DWORD d, LPCWSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeExW ? o_GetFileVersionInfoSizeExW(d, l, p) : 0; } DWORD WINAPI MyGetFileVersionInfoSizeW(LPCWSTR l, LPDWORD p) { return o_GetFileVersionInfoSizeW ? o_GetFileVersionInfoSizeW(l, p) : 0; } BOOL WINAPI MyGetFileVersionInfoW(LPCWSTR l, DWORD d1, DWORD d2, LPVOID p) { return o_GetFileVersionInfoW ? o_GetFileVersionInfoW(l, d1, d2, p) : FALSE; } DWORD WINAPI MyVerFindFileA(DWORD d, LPCSTR l1, LPCSTR l2, LPCSTR l3, LPSTR l4, PUINT p1, LPSTR l5, PUINT p2) { return o_VerFindFileA ? o_VerFindFileA(d, l1, l2, l3, l4, p1, l5, p2) : 0; } DWORD WINAPI MyVerFindFileW(DWORD d, LPCWSTR l1, LPCWSTR l2, LPCWSTR l3, LPWSTR l4, PUINT p1, LPWSTR l5, PUINT p2) { return o_VerFindFileW ? o_VerFindFileW(d, l1, l2, l3, l4, p1, l5, p2) : 0; } DWORD WINAPI MyVerInstallFileA(DWORD d, LPCSTR l1, LPCSTR l2, LPCSTR l3, LPCSTR l4, LPCSTR l5, LPSTR l6, PUINT p) { return o_VerInstallFileA ? o_VerInstallFileA(d, l1, l2, l3, l4, l5, l6, p) : 0; } DWORD WINAPI MyVerInstallFileW(DWORD d, LPCWSTR l1, LPCWSTR l2, LPCWSTR l3, LPCWSTR l4, LPCWSTR l5, LPSTR l6, PUINT p) { return o_VerInstallFileW ? o_VerInstallFileW(d, l1, l2, l3, l4, l5, l6, p) : 0; } DWORD WINAPI MyVerLanguageNameA(DWORD d, LPSTR l, DWORD d2) { return o_VerLanguageNameA ? o_VerLanguageNameA(d, l, d2) : 0; } DWORD WINAPI MyVerLanguageNameW(DWORD d, LPWSTR l, DWORD d2) { return o_VerLanguageNameW ? o_VerLanguageNameW(d, l, d2) : 0; } BOOL WINAPI MyVerQueryValueA(LPCVOID p, LPCSTR l, LPVOID* lp, PUINT pu) { return o_VerQueryValueA ? o_VerQueryValueA(p, l, lp, pu) : FALSE; } BOOL WINAPI MyVerQueryValueW(LPCVOID p, LPCWSTR l, LPVOID* lp, PUINT pu) { return o_VerQueryValueW ? o_VerQueryValueW(p, l, lp, pu) : FALSE; } } void SetupProxy() { char sysPath[MAX_PATH]; GetSystemDirectoryA(sysPath, MAX_PATH); HMODULE hReal = LoadLibraryA((std::string(sysPath) + "\\version.dll").c_str()); if (!hReal) return; o_GetFileVersionInfoA = (decltype(o_GetFileVersionInfoA)) GetProcAddress(hReal, "GetFileVersionInfoA"); o_GetFileVersionInfoByHandle= (decltype(o_GetFileVersionInfoByHandle))GetProcAddress(hReal, "GetFileVersionInfoByHandle"); o_GetFileVersionInfoExA = (decltype(o_GetFileVersionInfoExA)) GetProcAddress(hReal, "GetFileVersionInfoExA"); o_GetFileVersionInfoExW = (decltype(o_GetFileVersionInfoExW)) GetProcAddress(hReal, "GetFileVersionInfoExW"); o_GetFileVersionInfoSizeA = (decltype(o_GetFileVersionInfoSizeA)) GetProcAddress(hReal, "GetFileVersionInfoSizeA"); o_GetFileVersionInfoSizeExA = (decltype(o_GetFileVersionInfoSizeExA))GetProcAddress(hReal, "GetFileVersionInfoSizeExA"); o_GetFileVersionInfoSizeExW = (decltype(o_GetFileVersionInfoSizeExW))GetProcAddress(hReal, "GetFileVersionInfoSizeExW"); o_GetFileVersionInfoSizeW = (decltype(o_GetFileVersionInfoSizeW)) GetProcAddress(hReal, "GetFileVersionInfoSizeW"); o_GetFileVersionInfoW = (decltype(o_GetFileVersionInfoW)) GetProcAddress(hReal, "GetFileVersionInfoW"); o_VerFindFileA = (decltype(o_VerFindFileA)) GetProcAddress(hReal, "VerFindFileA"); o_VerFindFileW = (decltype(o_VerFindFileW)) GetProcAddress(hReal, "VerFindFileW"); o_VerInstallFileA = (decltype(o_VerInstallFileA))GetProcAddress(hReal, "VerInstallFileA"); o_VerInstallFileW = (decltype(o_VerInstallFileW))GetProcAddress(hReal, "VerInstallFileW"); o_VerLanguageNameA= (decltype(o_VerLanguageNameA))GetProcAddress(hReal,"VerLanguageNameA"); o_VerLanguageNameW= (decltype(o_VerLanguageNameW))GetProcAddress(hReal,"VerLanguageNameW"); o_VerQueryValueA = (decltype(o_VerQueryValueA)) GetProcAddress(hReal, "VerQueryValueA"); o_VerQueryValueW = (decltype(o_VerQueryValueW)) GetProcAddress(hReal, "VerQueryValueW"); } uintptr_t GameAssembly = 0; uintptr_t offset_ConnectUsingSettings = 0x0; // Photon.Pun.PhotonNetwork$$ConnectUsingSettings — get from IL2CPPDumper struct Il2CppString { void* k; void* m; int32_t len; wchar_t chars[1]; }; using il2cpp_string_new_t = Il2CppString* (*)(const char*); il2cpp_string_new_t il2cpp_string_new = nullptr; template <typename T> void WriteMem(uintptr_t addr, T val) { DWORD old; VirtualProtect((LPVOID)addr, sizeof(T), PAGE_EXECUTE_READWRITE, &old); *(T*)addr = val; VirtualProtect((LPVOID)addr, sizeof(T), old, &old); } using o_photon_hook_t = void(*)(void*, bool, void*); o_photon_hook_t o_photon_hook = nullptr; void photon_hook(void* _appSettings, bool startInOfflineMode, void* mi) { if (_appSettings && il2cpp_string_new != nullptr) { WriteMem((uintptr_t)_appSettings + 0x10, il2cpp_string_new("")); // PUN2 App ID — put yours here WriteMem((uintptr_t)_appSettings + 0x28, il2cpp_string_new("")); // Voice App ID — put yours here } return o_photon_hook(_appSettings, startInOfflineMode, mi); } void Main() { while (!(GameAssembly = (uintptr_t)GetModuleHandleA("GameAssembly.dll"))) { Sleep(200); } HMODULE hGA = (HMODULE)GameAssembly; il2cpp_string_new = (il2cpp_string_new_t)GetProcAddress(hGA, "il2cpp_string_new"); MH_Initialize(); uintptr_t targetAddr = GameAssembly + offset_ConnectUsingSettings; if (MH_CreateHook((LPVOID)targetAddr, (LPVOID)&photon_hook, (LPVOID*)&o_photon_hook) == MH_OK) MH_EnableHook((LPVOID)targetAddr); } BOOL APIENTRY DllMain(HMODULE hMod, DWORD reason, LPVOID lpRes) { if (reason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hMod); SetupProxy(); CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Main, 0, 0, 0); } return TRUE; }
1.
2.
3.
1.
2.
3.
| V15.15 | 3348281417896630206 |
|
| V15.14 | 870527552046858271 |
|
| V15.13 | 7476118174894341199 |
|
| V14 | 278411263891078692 |
|
| V13 | 4048480789313255345 |
C# — Imports.cs
using System; using System.Runtime.InteropServices; using System.Text; public static class Imports { [DllImport("kernel32.dll", SetLastError = true)] public static extern bool CheckRemoteDebuggerPresent( IntPtr hProcess, ref bool isDebuggerPresent); [DllImport("user32.dll", SetLastError = true)] public static extern int GetWindowText( IntPtr hWnd, StringBuilder lpString, int nMaxCount); [DllImport("user32.dll", SetLastError = true)] public static extern int GetWindowTextLength(IntPtr hWnd); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool IsWindowVisible(IntPtr hWnd); }
C# — Program.cs
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; static class Detections { public const string GameProcessName = "GoreBox"; private static readonly HashSet<string> SuspiciousWindowTitles = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Cheat Engine", "Process Hacker", "System Informer", "x64dbg", "x32dbg", "IDA Pro", "OllyDbg", "BepInEx", "MelonLoader" }; private static readonly HashSet<string> ModFolderNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "BepInEx", "MelonLoader", "Mods", "UserMods", "UserLibs", "dotnet", "Plugins" }; private static readonly HashSet<string> ForbiddenFiles = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "winhttp.dll", "winmm.dll", "dinput8.dll", "dxgi.dll", "d3d9.dll", "d3d11.dll", "d3d12.dll", "opengl32.dll", "xinput1_3.dll", "xinput1_4.dll", "xinput9_1_0.dll", "dsound.dll", "ddraw.dll", "msacm32.dll", "cryptsp.dll", "doorstop_config.ini", "doorstop_config.xml", "doorstop_config", "doorstop.dll", "BepInEx.cfg", "MelonLoader.dll", "bootstrap.dll", "IPA.Injector.exe", "IPA.Loader.dll", "BSIPA.dll", "UnityModManager.dll", "UnityModManagerConfig.xml", "injector.dll", "loader.dll", "proxy.dll", "hack.dll", "modloader.dll", "mod_loader.dll", "imgui.ini", "imgui.dll", "cimgui.dll", "REFramework.dll", "0Harmony.dll", "HarmonyX.dll", "MonoMod.RuntimeDetour.dll", "Mono.Cecil.dll", "GameAssembly.dll.bak", "global-metadata.dat.bak", "Il2CppInterop.Runtime.dll", "UnhollowerBaseLib.dll", "speedhack.dll" }; private static bool CheckDirectoryForMods(string path) { if (string.IsNullOrEmpty(path) || !Directory.Exists(path)) return false; try { foreach (var dir in Directory.GetDirectories(path)) { if (ModFolderNames.Contains(Path.GetFileName(dir))) return true; } foreach (var file in Directory.GetFiles(path)) { if (ForbiddenFiles.Contains(Path.GetFileName(file))) return true; } } catch { } return false; } public static bool IntegrityCheckFailed() { string localDir = AppContext.BaseDirectory; if (CheckDirectoryForMods(localDir)) return true; try { DirectoryInfo parent = Directory.GetParent(localDir); if (parent != null) parent = Directory.GetParent(parent.FullName); if (parent != null) parent = Directory.GetParent(parent.FullName); if (parent != null && CheckDirectoryForMods(parent.FullName)) { return true; } } catch { } return false; } public static bool IsGameBeingDebugged() { var targets = Process.GetProcessesByName(GameProcessName); if (targets.Length == 0) return false; foreach (var proc in targets) { try { bool isTargetDebugged = false; if (Imports.CheckRemoteDebuggerPresent(proc.Handle, ref isTargetDebugged) && isTargetDebugged) { return true; } } catch { return true; } } return false; } public static bool ScanBadWindows() { foreach (var proc in Process.GetProcesses()) { try { IntPtr hWnd = proc.MainWindowHandle; if (hWnd == IntPtr.Zero || !Imports.IsWindowVisible(hWnd)) continue; int length = Imports.GetWindowTextLength(hWnd); if (length == 0) continue; StringBuilder builder = new StringBuilder(length + 1); Imports.GetWindowText(hWnd, builder, builder.Capacity); string title = builder.ToString(); if (SuspiciousWindowTitles.Any(badTitle => title.IndexOf(badTitle, StringComparison.OrdinalIgnoreCase) >= 0)) { return true; } } catch { } } return false; } public static void KillGame() { foreach (var proc in Process.GetProcessesByName(GameProcessName)) { try { proc.Kill(); } catch { } } } } public static class Entry { public static void Main() { Thread.Sleep(2000); while (true) { var games = Process.GetProcessesByName(Detections.GameProcessName); if (games.Length == 0) { Thread.Sleep(3000); if (Process.GetProcessesByName(Detections.GameProcessName).Length == 0) break; } if (Detections.IntegrityCheckFailed() || Detections.IsGameBeingDebugged() || Detections.ScanBadWindows()) { Detections.KillGame(); Thread.Sleep(1000); Environment.Exit(0); } Thread.Sleep(1000); } } }


1.
2.
3.
4.
5.