From fc7a28a18331ddb12d3ed9d72497e0cfd58e0a59 Mon Sep 17 00:00:00 2001 From: Anthony Titus Date: Sun, 22 May 2022 18:40:02 -0400 Subject: [PATCH] Delete Versioning.h and update to 2628 --- OpenVHook/Scripting/ScriptEngine.cpp | 360 ++++++++++++++++++++++++++- OpenVHook/Scripting/Versioning.h | 345 ------------------------- 2 files changed, 359 insertions(+), 346 deletions(-) delete mode 100644 OpenVHook/Scripting/Versioning.h diff --git a/OpenVHook/Scripting/ScriptEngine.cpp b/OpenVHook/Scripting/ScriptEngine.cpp index abc1c2e..e9adaaa 100644 --- a/OpenVHook/Scripting/ScriptEngine.cpp +++ b/OpenVHook/Scripting/ScriptEngine.cpp @@ -1,6 +1,5 @@ #include "ScriptEngine.h" #include "..\Utility\Pattern.h" -#include "Versioning.h" #include "Hooking.h" #include "..\Utility\Log.h" #include "..\DirectXHook\DirectXHook.h" @@ -82,6 +81,123 @@ static std::unordered_map foundHashCache; static eGameState * gameState; +static std::vector GameVersionString = { + "VER_1_0_335_2_STEAM", + "VER_1_0_335_2_NOSTEAM", + + "VER_1_0_350_1_STEAM", + "VER_1_0_350_2_NOSTEAM", + + "VER_1_0_372_2_STEAM", + "VER_1_0_372_2_NOSTEAM", + + "VER_1_0_393_2_STEAM", + "VER_1_0_393_2_NOSTEAM", + "VER_1_0_393_4_STEAM", + "VER_1_0_393_4_NOSTEAM", + + "VER_1_0_463_1_STEAM", + "VER_1_0_463_1_NOSTEAM", + + "VER_1_0_505_2_STEAM", + "VER_1_0_505_2_NOSTEAM", + + "VER_1_0_573_1_STEAM", + "VER_1_0_573_1_NOSTEAM", + + "VER_1_0_617_1_STEAM", + "VER_1_0_617_1_NOSTEAM", + + "VER_1_0_678_1_STEAM", + "VER_1_0_678_1_NOSTEAM", + + "VER_1_0_757_2_STEAM", + "VER_1_0_757_2_NOSTEAM", + + "VER_1_0_757_4_STEAM", + "VER_1_0_757_4_NOSTEAM", + + "VER_1_0_791_2_STEAM", + "VER_1_0_791_2_NOSTEAM", + + "VER_1_0_877_1_STEAM", + "VER_1_0_877_1_NOSTEAM", + + "VER_1_0_944_2_STEAM", + "VER_1_0_944_2_NOSTEAM", + + "VER_1_0_1011_1_STEAM", + "VER_1_0_1011_1_NOSTEAM", + + "VER_1_0_1032_1_STEAM", + "VER_1_0_1032_1_NOSTEAM", + + "VER_1_0_1103_2_STEAM", + "VER_1_0_1103_2_NOSTEAM", + + "VER_1_0_1180_2_STEAM", + "VER_1_0_1180_2_NOSTEAM", + + "VER_1_0_1290_1_STEAM", + "VER_1_0_1290_1_NOSTEAM", + + "VER_1_0_1365_1_STEAM", + "VER_1_0_1365_1_NOSTEAM", + + "VER_1_0_1493_0_STEAM", + "VER_1_0_1493_0_NOSTEAM", + + "VER_1_0_1493_1_STEAM", + "VER_1_0_1493_1_NOSTEAM", + + "VER_1_0_1604_0_STEAM", + "VER_1_0_1604_0_NOSTEAM", + + "VER_1_0_1604_1_STEAM", + "VER_1_0_1604_1_NOSTEAM", + + "VER_1_0_1737_0_STEAM", + "VER_1_0_1737_0_NOSTEAM", + + "VER_1_0_1737_6_STEAM", + "VER_1_0_1737_6_NOSTEAM", + + "VER_1_0_1868_0_STEAM", + "VER_1_0_1868_0_NOSTEAM", + + "VER_1_0_1868_1_STEAM", + "VER_1_0_1868_1_NOSTEAM", + + "VER_1_0_1868_4_EGS", + + "VER_1_0_2060_0_STEAM", + "VER_1_0_2060_0_NOSTEAM", + + "VER_1_0_2060_1_STEAM", + "VER_1_0_2060_1_NOSTEAM", + + "VER_1_0_2189_0_STEAM", + "VER_1_0_2189_0_NOSTEAM", + + "VER_1_0_2215_0_STEAM", + "VER_1_0_2215_0_NOSTEAM", + + "VER_1_0_2245_0_STEAM", + "VER_1_0_2245_0_NOSTEAM" + + "VER_1_0_2372_0_STEAM", + "VER_1_0_2372_0_NOSTEAM", + + "VER_1_0_2545_0_STEAM", + "VER_1_0_2545_0_NOSTEAM", + + "VER_1_0_2612_1_STEAM", + "VER_1_0_2612_1_NOSTEAM", + + "VER_1_0_2628_2_STEAM", + "VER_1_0_2628_2_NOSTEAM", +}; + static std::string GameVersionToString(int version) { if (version > GameVersionString.size() - 1 || version < 0) { return std::to_string(version); @@ -409,3 +525,245 @@ eGameState ScriptEngine::GetGameState() { return *gameState; } + +int ScriptEngine::GetGameVersion() +{ + LPVOID pModule = GetModuleHandleA(NULL); + + DWORD codeSig = *(DWORD*)((DWORD64)pModule + 0x870000); + + switch (codeSig) + { + case 0xE8012024: + return 0; + case 0xA29410: + return 1; + case 0x7D2205FF: + return 2; + case 0x1: + return 3; + case 0x1ECB9: + return 4; + case 0x100FF360: + return 5; + case 0x8B48FF79: + return 7; + case 0xC4834800: + return 9; + case 0xF000001: + return 10; + case 0xC86E0F66: + return 11; + case 0x57085889: + return 12; + case 0x28C48348: + return 13; + case 0x4DE2E800: + return 14; + case 0x8948C88B: + return 15; + case 0xF4397715: + return 16; + case 0x48FFF41E: + return 17; + case 0x36CB0305: + return 18; + case 0xB95A0589: + return 19; + case 0x8B48C88B: + return 20; + case 0xE80C75D2: + return 21; + case 0x137978C: + return 23; + case 0xB86AE800: + return 24; + case 0x75C68441: + return 27; + case 0x828B1C74: + return 28; + case 0xD8B4800: + return 29; + case 0x3C244C10: + return 30; + case 0xB2F4E30D: + return 31; + case 0x89587500: + return 35; + case 0xC4834801: + return 36; + case 0xF36C5010: + return 37; + case 0x83483024: + return 38; + case 0x2C0EB25: + return 40; + case 0x8B484874: // 1.0.1868.0 STEAM + return 54; + case 0xA0C18148: // 1.0.1868.4 EPIC + return 58; + case 0x02: // Steam Placeholder + return 59; + case 0x0: // 1.0.2060.0 NONSTEAM + return 62; + case 59: // 1.0.2060.1 STEAM Placeholder + return 61; + case 60: // 1.0.2060.1 NONSTEAM + return 62; + case 61: // 1.0.2189.0 STEAM Placeholder + return 63; + case 0xC1000000: // 1.0.2189.0 NONSTEAM + return 64; + case 0x1428D41: + return 65; + case 0x33450158: + return 66; + case 0xDE80000: + return 67; + case 0x448D48CA: + return 68; + case 0x1491: // temp + return 69; + case 0x1490: + return 70; + case 0x14912: // temp + return 71; + case 0x178A4101: + return 72; + case 0x14913: // temp + return 73; + case 0x14914: // temp + return 74; + case 0x14915: // temp + return 75; + case 0x27B0B3E8: + return 76; + default: + if (codeSig == 0) { + if (*(DWORD*)((DWORD64)pModule + 0xB00000) == 0x7F58E3E8) + return 60; + else + return 62; + } + if (codeSig == 0x89605189) { + if (*(DWORD*)((DWORD64)pModule + 0x1433B08) == 0x245C8948) + return 6; + else + return 8; + } + return codeSig; + } +} + +int ScriptEngine::GameVersionToSearchDepth(int version) +{ + switch (version) { + case 0: + case 1: + return 0; + case 2: + case 3: + return 1; + case 4: + case 5: + return 2; + case 6: + case 7: + case 8: + case 9: + return 3; + case 10: + case 11: + return 4; + case 12: + case 13: + return 5; + case 14: + case 15: + return 6; + case 16: + case 17: + return 7; + case 18: + case 19: + return 8; + case 20: + case 21: + case 22: + case 23: + return 9; + case 24: + case 25: + return 10; + case 26: + case 27: + return 11; + case 28: + case 29: + return 12; + case 30: + case 31: + case 32: + case 33: + return 13; + case 34: + case 35: + return 14; + case 36: + case 37: + return 15; + case 38: + case 39: + return 16; + case 40: + case 41: + return 17; + case 42: + case 43: + case 44: + case 45: + return 18; + case 46: + case 47: + case 48: + case 49: + return 19; + case 50: + case 51: + case 52: + case 53: + return 20; + case 54: + case 55: + case 56: + case 57: + case 58: + return 21; + case 59: + case 60: + case 61: + case 62: + return 22; + case 63: + return 22; + case 64: + case 65: + case 66: + case 67: + case 68: + return 23; + case 69: + case 70: + return 24; + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + return 25; + + default: + return fullHashMapDepth - 1; + } +} diff --git a/OpenVHook/Scripting/Versioning.h b/OpenVHook/Scripting/Versioning.h deleted file mode 100644 index 7700171..0000000 --- a/OpenVHook/Scripting/Versioning.h +++ /dev/null @@ -1,345 +0,0 @@ -#include "..\Utility\Log.h" - -#include -#include - -static std::vector GameVersionString = { - "VER_1_0_335_2_STEAM", - "VER_1_0_335_2_NOSTEAM", - - "VER_1_0_350_1_STEAM", - "VER_1_0_350_2_NOSTEAM", - - "VER_1_0_372_2_STEAM", - "VER_1_0_372_2_NOSTEAM", - - "VER_1_0_393_2_STEAM", - "VER_1_0_393_2_NOSTEAM", - "VER_1_0_393_4_STEAM", - "VER_1_0_393_4_NOSTEAM", - - "VER_1_0_463_1_STEAM", - "VER_1_0_463_1_NOSTEAM", - - "VER_1_0_505_2_STEAM", - "VER_1_0_505_2_NOSTEAM", - - "VER_1_0_573_1_STEAM", - "VER_1_0_573_1_NOSTEAM", - - "VER_1_0_617_1_STEAM", - "VER_1_0_617_1_NOSTEAM", - - "VER_1_0_678_1_STEAM", - "VER_1_0_678_1_NOSTEAM", - - "VER_1_0_757_2_STEAM", - "VER_1_0_757_2_NOSTEAM", - - "VER_1_0_757_4_STEAM", - "VER_1_0_757_4_NOSTEAM", - - "VER_1_0_791_2_STEAM", - "VER_1_0_791_2_NOSTEAM", - - "VER_1_0_877_1_STEAM", - "VER_1_0_877_1_NOSTEAM", - - "VER_1_0_944_2_STEAM", - "VER_1_0_944_2_NOSTEAM", - - "VER_1_0_1011_1_STEAM", - "VER_1_0_1011_1_NOSTEAM", - - "VER_1_0_1032_1_STEAM", - "VER_1_0_1032_1_NOSTEAM", - - "VER_1_0_1103_2_STEAM", - "VER_1_0_1103_2_NOSTEAM", - - "VER_1_0_1180_2_STEAM", - "VER_1_0_1180_2_NOSTEAM", - - "VER_1_0_1290_1_STEAM", - "VER_1_0_1290_1_NOSTEAM", - - "VER_1_0_1365_1_STEAM", - "VER_1_0_1365_1_NOSTEAM", - - "VER_1_0_1493_0_STEAM", - "VER_1_0_1493_0_NOSTEAM", - - "VER_1_0_1493_1_STEAM", - "VER_1_0_1493_1_NOSTEAM", - - "VER_1_0_1604_0_STEAM", - "VER_1_0_1604_0_NOSTEAM", - - "VER_1_0_1604_1_STEAM", - "VER_1_0_1604_1_NOSTEAM", - - "VER_1_0_1737_0_STEAM", - "VER_1_0_1737_0_NOSTEAM", - - "VER_1_0_1737_6_STEAM", - "VER_1_0_1737_6_NOSTEAM", - - "VER_1_0_1868_0_STEAM", - "VER_1_0_1868_0_NOSTEAM", - - "VER_1_0_1868_1_STEAM", - "VER_1_0_1868_1_NOSTEAM", - - "VER_1_0_1868_4_EGS", - - "VER_1_0_2060_0_STEAM", - "VER_1_0_2060_0_NOSTEAM", - - "VER_1_0_2060_1_STEAM", - "VER_1_0_2060_1_NOSTEAM", - - "VER_1_0_2189_0_STEAM", - "VER_1_0_2189_0_NOSTEAM", - - "VER_1_0_2215_0_STEAM", - "VER_1_0_2215_0_NOSTEAM", - - "VER_1_0_2245_0_STEAM", - "VER_1_0_2245_0_NOSTEAM" - - "VER_1_0_2372_0_STEAM", - "VER_1_0_2372_0_NOSTEAM", - - "VER_1_0_2545_0_STEAM", - "VER_1_0_2545_0_NOSTEAM", -}; - -int ScriptEngine::GetGameVersion() -{ - LPVOID pModule = GetModuleHandleA(NULL); - - DWORD codeSig = *(DWORD*)((DWORD64)pModule + 0x870000); - - switch (codeSig) - { - case 0xE8012024: - return 0; - case 0xA29410: - return 1; - case 0x7D2205FF: - return 2; - case 0x1: - return 3; - case 0x1ECB9: - return 4; - case 0x100FF360: - return 5; - case 0x8B48FF79: - return 7; - case 0xC4834800: - return 9; - case 0xF000001: - return 10; - case 0xC86E0F66: - return 11; - case 0x57085889: - return 12; - case 0x28C48348: - return 13; - case 0x4DE2E800: - return 14; - case 0x8948C88B: - return 15; - case 0xF4397715: - return 16; - case 0x48FFF41E: - return 17; - case 0x36CB0305: - return 18; - case 0xB95A0589: - return 19; - case 0x8B48C88B: - return 20; - case 0xE80C75D2: - return 21; - case 0x137978C: - return 23; - case 0xB86AE800: - return 24; - case 0x75C68441: - return 27; - case 0x828B1C74: - return 28; - case 0xD8B4800: - return 29; - case 0x3C244C10: - return 30; - case 0xB2F4E30D: - return 31; - case 0x89587500: - return 35; - case 0xC4834801: - return 36; - case 0xF36C5010: - return 37; - case 0x83483024: - return 38; - case 0x2C0EB25: - return 40; - case 0x8B484874: // 1.0.1868.0 STEAM - return 54; - case 0xA0C18148: // 1.0.1868.4 EPIC - return 58; - case 0x02: // Steam Placeholder - return 59; - case 0x0: // 1.0.2060.0 NONSTEAM - return 62; - case 59: // 1.0.2060.1 STEAM Placeholder - return 61; - case 60: // 1.0.2060.1 NONSTEAM - return 62; - case 61: // 1.0.2189.0 STEAM Placeholder - return 63; - case 0xC1000000: // 1.0.2189.0 NONSTEAM - return 64; - case 0x1428D41: - return 65; - case 0x33450158: - return 66; - case 0xDE80000: - return 67; - case 0x448D48CA: - return 68; - case 0x1491: // temp - return 69; - case 0x1490: - return 70; - case 0x14912: // temp - return 71; - case 0x178A4101: - return 72; - default: - if (codeSig == 0) { - if (*(DWORD*)((DWORD64)pModule + 0xB00000) == 0x7F58E3E8) - return 60; - else - return 62; - } - if (codeSig == 0x89605189) { - if (*(DWORD*)((DWORD64)pModule + 0x1433B08) == 0x245C8948) - return 6; - else - return 8; - } - return codeSig; - } -} - -int ScriptEngine::GameVersionToSearchDepth(int version) -{ - switch (version) { - case 0: - case 1: - return 0; - case 2: - case 3: - return 1; - case 4: - case 5: - return 2; - case 6: - case 7: - case 8: - case 9: - return 3; - case 10: - case 11: - return 4; - case 12: - case 13: - return 5; - case 14: - case 15: - return 6; - case 16: - case 17: - return 7; - case 18: - case 19: - return 8; - case 20: - case 21: - case 22: - case 23: - return 9; - case 24: - case 25: - return 10; - case 26: - case 27: - return 11; - case 28: - case 29: - return 12; - case 30: - case 31: - case 32: - case 33: - return 13; - case 34: - case 35: - return 14; - case 36: - case 37: - return 15; - case 38: - case 39: - return 16; - case 40: - case 41: - return 17; - case 42: - case 43: - case 44: - case 45: - return 18; - case 46: - case 47: - case 48: - case 49: - return 19; - case 50: - case 51: - case 52: - case 53: - return 20; - case 54: - case 55: - case 56: - case 57: - case 58: - return 21; - case 59: - case 60: - case 61: - case 62: - return 22; - case 63: - return 22; - case 64: - case 65: - case 66: - case 67: - case 68: - return 23; - case 69: - case 70: - return 24; - case 71: - case 72: - return 25; - - default: - return fullHashMapDepth - 1; - } -} \ No newline at end of file