From 554033c01afc51c283e0997d28573abe7599ef24 Mon Sep 17 00:00:00 2001 From: BobTheBob9 Date: Fri, 19 Aug 2022 19:29:15 +0100 Subject: improve rpakfilesystem --- NorthstarDLL/NSMem.h | 212 -- NorthstarDLL/NorthstarDLL.vcxproj | 1343 ++++++----- NorthstarDLL/NorthstarDLL.vcxproj.filters | 3557 ++++++++++++++--------------- NorthstarDLL/exploitfixes_utf8parser.cpp | 3 +- NorthstarDLL/rpakfilesystem.cpp | 103 +- NorthstarDLL/rpakfilesystem.h | 52 +- 6 files changed, 2561 insertions(+), 2709 deletions(-) delete mode 100644 NorthstarDLL/NSMem.h diff --git a/NorthstarDLL/NSMem.h b/NorthstarDLL/NSMem.h deleted file mode 100644 index 8012ea87..00000000 --- a/NorthstarDLL/NSMem.h +++ /dev/null @@ -1,212 +0,0 @@ -#pragma once -#include "pch.h" - -// KittenPopo's memory stuff, made for northstar (because I really can't handle working with northstar's original memory stuff tbh) - -#pragma region Pattern Scanning -namespace NSMem -{ - inline std::vector HexBytesToString(const char* str) - { - std::vector patternNums; - int size = strlen(str); - for (int i = 0; i < size; i++) - { - char c = str[i]; - - // If this is a space character, ignore it - if (c == ' ' || c == '\t') - continue; - - if (c == '?') - { - // Add a wildcard (-1) - patternNums.push_back(-1); - } - else if (i < size - 1) - { - BYTE result = 0; - for (int j = 0; j < 2; j++) - { - int val = 0; - char c = *(str + i + j); - if (c >= 'a') - { - val = c - 'a' + 0xA; - } - else if (c >= 'A') - { - val = c - 'A' + 0xA; - } - else if (isdigit(c)) - { - val = c - '0'; - } - else - { - assert(false, "Failed to parse invalid hex string."); - val = -1; - } - - result += (j == 0) ? val * 16 : val; - } - patternNums.push_back(result); - } - - i++; - } - - return patternNums; - } - - inline void* PatternScan(void* module, const int* pattern, int patternSize, int offset) - { - if (!module) - return NULL; - - auto dosHeader = (PIMAGE_DOS_HEADER)module; - auto ntHeaders = (PIMAGE_NT_HEADERS)((BYTE*)module + dosHeader->e_lfanew); - - auto sizeOfImage = ntHeaders->OptionalHeader.SizeOfImage; - - auto scanBytes = (BYTE*)module; - - for (auto i = 0; i < sizeOfImage - patternSize; ++i) - { - bool found = true; - for (auto j = 0; j < patternSize; ++j) - { - if (scanBytes[i + j] != pattern[j] && pattern[j] != -1) - { - found = false; - break; - } - } - - if (found) - { - uintptr_t addressInt = (uintptr_t)(&scanBytes[i]) + offset; - return (uint8_t*)addressInt; - } - } - - return nullptr; - } - - inline void* PatternScan(const char* moduleName, const char* pattern, int offset = 0) - { - std::vector patternNums = HexBytesToString(pattern); - - return PatternScan(GetModuleHandleA(moduleName), &patternNums[0], patternNums.size(), offset); - } - - inline void BytePatch(uintptr_t address, const BYTE* vals, int size) - { - WriteProcessMemory(GetCurrentProcess(), (LPVOID)address, vals, size, NULL); - } - - inline void BytePatch(uintptr_t address, std::initializer_list vals) - { - std::vector bytes = vals; - if (!bytes.empty()) - BytePatch(address, &bytes[0], bytes.size()); - } - - inline void BytePatch(uintptr_t address, const char* bytesStr) - { - std::vector byteInts = HexBytesToString(bytesStr); - std::vector bytes; - for (int v : byteInts) - bytes.push_back(v); - - if (!bytes.empty()) - BytePatch(address, &bytes[0], bytes.size()); - } - - inline void NOP(uintptr_t address, int size) - { - BYTE* buf = (BYTE*)malloc(size); - memset(buf, 0x90, size); - BytePatch(address, buf, size); - free(buf); - } - - inline bool IsMemoryReadable(void* ptr, size_t size) - { - static SYSTEM_INFO sysInfo; - if (!sysInfo.dwPageSize) - GetSystemInfo(&sysInfo); // This should always be 4096 unless ur playing on NES or some shit but whatever - - MEMORY_BASIC_INFORMATION memInfo; - - if (!VirtualQuery(ptr, &memInfo, sizeof(memInfo))) - return false; - - if (memInfo.RegionSize < size) - return false; - - return (memInfo.State & MEM_COMMIT) && !(memInfo.Protect & PAGE_NOACCESS); - } -} // namespace NSMem - -#pragma region KHOOK -struct KHookPatternInfo -{ - const char *moduleName, *pattern; - int offset = 0; - - KHookPatternInfo(const char* moduleName, const char* pattern, int offset = 0) : moduleName(moduleName), pattern(pattern), offset(offset) - { - } -}; - -struct KHook -{ - KHookPatternInfo targetFunc; - void* targetFuncAddr; - void* hookFunc; - void** original; - - static inline std::vector _allHooks; - - KHook(KHookPatternInfo targetFunc, void* hookFunc, void** original) : targetFunc(targetFunc) - { - this->hookFunc = hookFunc; - this->original = original; - _allHooks.push_back(this); - } - - bool Setup() - { - targetFuncAddr = NSMem::PatternScan(targetFunc.moduleName, targetFunc.pattern, targetFunc.offset); - if (!targetFuncAddr) - return false; - - return MH_CreateHook(targetFuncAddr, hookFunc, original) == MH_OK; - } - - // Returns true if succeeded - static bool InitAllHooks() - { - for (KHook* hook : _allHooks) - { - if (hook->Setup()) - { - //spdlog::info("KHook hooked at {}", hook->targetFuncAddr); - spdlog::info("KHOOK {} at {}", hook->targetFunc.pattern, hook->targetFuncAddr); - } - else - { - return false; - } - } - - return MH_EnableHook(MH_ALL_HOOKS) == MH_OK; - } -}; -#define KHOOK(name, funcPatternInfo, returnType, convention, args) \ - returnType convention hk##name args; \ - auto o##name = (returnType(convention*) args)0; \ - KHook k##name = KHook(KHookPatternInfo funcPatternInfo, &hk##name, (void**)&o##name); \ - returnType convention hk##name args -#pragma endregion diff --git a/NorthstarDLL/NorthstarDLL.vcxproj b/NorthstarDLL/NorthstarDLL.vcxproj index 498dbe66..fcfbde57 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj +++ b/NorthstarDLL/NorthstarDLL.vcxproj @@ -1,672 +1,671 @@ - - - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {cfad2623-064f-453c-8196-79ee10292e32} - NorthstarDedicatedTest - 10.0 - NorthstarDLL - - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - - - - - - - - - - - - - - true - Northstar - - - false - Northstar - - - - Level3 - true - _DEBUG;NORTHSTARDEDICATEDTEST_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);CURL_STATICLIB - true - Use - pch.h - stdcpp17 - $(ProjectDir)include;%(AdditionalIncludeDirectories) - - - Windows - true - false - $(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies) - - - %(AdditionalLibraryDirectories) - - - - - - - copy /Y "$(TargetPath)" "$(SolutionDir)..\..\" - - - - - Level3 - true - true - true - NDEBUG;NORTHSTARDEDICATEDTEST_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);CURL_STATICLIB - true - Use - pch.h - stdcpp17 - $(ProjectDir)include;%(AdditionalIncludeDirectories) - MultiThreadedDLL - - - Windows - true - true - true - false - $(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies) - - - %(AdditionalLibraryDirectories) - - - - - - - copy /Y "$(TargetPath)" "$(SolutionDir)..\..\" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {cfad2623-064f-453c-8196-79ee10292e32} + NorthstarDedicatedTest + 10.0 + NorthstarDLL + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + true + Northstar + + + false + Northstar + + + + Level3 + true + _DEBUG;NORTHSTARDEDICATEDTEST_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);CURL_STATICLIB + true + Use + pch.h + stdcpp17 + $(ProjectDir)include;%(AdditionalIncludeDirectories) + + + Windows + true + false + $(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies) + + + %(AdditionalLibraryDirectories) + + + + + + + copy /Y "$(TargetPath)" "$(SolutionDir)..\..\" + + + + + Level3 + true + true + true + NDEBUG;NORTHSTARDEDICATEDTEST_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);CURL_STATICLIB + true + Use + pch.h + stdcpp17 + $(ProjectDir)include;%(AdditionalIncludeDirectories) + MultiThreadedDLL + + + Windows + true + true + true + false + $(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies) + + + %(AdditionalLibraryDirectories) + + + + + + + copy /Y "$(TargetPath)" "$(SolutionDir)..\..\" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NorthstarDLL/NorthstarDLL.vcxproj.filters b/NorthstarDLL/NorthstarDLL.vcxproj.filters index 1f617cd0..555e6481 100644 --- a/NorthstarDLL/NorthstarDLL.vcxproj.filters +++ b/NorthstarDLL/NorthstarDLL.vcxproj.filters @@ -1,1780 +1,1777 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {d4199e4b-10d2-43ce-af9c-e1fa79e1e64e} - - - {b6f79919-9735-476d-8798-067a75cbeca0} - - - {ca657be5-c2d8-4322-a689-1154aaafe57b} - - - {8596cc1c-0492-4467-91e3-1f03b7e19f77} - - - {11eaa578-6336-456e-9c7c-8bd202470945} - - - {7ecd75d2-7eee-41c4-87b6-3b7c2213f34e} - - - {8afc70f1-639c-49ef-9348-ef6dcece114e} - - - {398efed5-0a92-4d32-b5ba-b4a725b2a70a} - - - {74567974-c66b-45ef-ab28-97b7154ca224} - - - {4ca5392e-7d3d-4066-833f-f534cd5787c3} - - - {94b15898-ef33-41c7-995a-31791fccb7e2} - - - {6495657f-ea55-4552-8aa7-b54eb8e86a99} - - - {85aacdee-0f92-4ec4-b20c-0739c1175055} - - - {3d41d3fc-8a3b-4358-b3e8-4f06dc96abfe} - - - {d69760a9-d5ec-4f3e-8f43-f74041654d44} - - - {365e5c1f-4b2f-4d8b-a1d8-cdef401ca689} - - - {24fd0855-9288-4129-93ba-c6cafdc98d1b} - - - {4cb0dd89-5f16-4549-a864-34ca3075352a} - - - {914d8b8f-6b19-4f23-b746-f40062d72906} - - - {09516029-fac7-4235-ad61-402977534a0b} - - - {8cc1ae44-9dbf-4719-91a2-82e00b8d78e2} - - - {ea1e17a6-40b7-4e1b-8edb-e9ae704ce604} - - - {51910ba0-2ff8-461d-9f67-8d7907b57d22} - - - {325e0d7d-6832-496d-8d8e-968fdfa5dd40} - - - {802d0771-62f1-4733-89f9-57a4d8864b8d} - - - {04fd662a-6e70-494c-b720-c694a5cc2fb1} - - - {a18afb37-5fdd-4340-a6b4-a6541593e398} - - - {4a8a695a-a103-4b1f-b314-0ec19a253119} - - - {d8a83b5e-9a23-4124-824f-eab37880cb08} - - - {2cbddb28-0b17-4881-847d-8773da52b268} - - - {4db0d1e9-9035-457f-87f1-5dc3f13b6b9e} - - - {59b0f68f-daa7-4641-b6fa-8464b56da2bb} - - - {3e892d07-2239-44da-9cf3-c288a34cf9a2} - - - {14fc0931-acad-46ec-a55e-94f4469d4235} - - - {947835db-67d6-42c0-870d-62743f85231f} - - - {bf0769d8-40fd-4701-85e9-7ed94aab2283} - - - {9751b551-5886-45d4-a039-cbd10445263d} - - - {96101d42-72af-4fd1-8559-8d1d1ff66240} - - - {ee3ba13a-3061-41d7-981d-328ac2596fd2} - - - {0c93d909-e0d6-4c35-a8a4-a13f681a1012} - - - {94259c8c-5411-48bf-af4f-46ca32b7d0bb} - - - {44a83740-9d70-480d-9a7a-43b81f8eab9e} - - - {6bbce8a5-38b4-4763-a7cb-4e98012ec245} - - - {826d5193-3ad0-434b-ba7c-dd24ed4bbd0c} - - - {0f1ba4c4-78ee-4b05-afa5-6f598063f5c1} - - - - - Header Files - - - Header Files\include - - - Header Files - - - Header Files\Client - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog - - - Header Files\include\spdlog\cfg - - - Header Files\include\spdlog\cfg - - - Header Files\include\spdlog\cfg - - - Header Files\include\spdlog\cfg - - - Header Files\include\spdlog\fmt - - - Header Files\include\spdlog\fmt - - - Header Files\include\spdlog\fmt - - - Header Files\include\spdlog\fmt - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\sinks - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\spdlog\details - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson - - - Header Files\include\rapidjson\error - - - Header Files\include\rapidjson\error - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\internal - - - Header Files\include\rapidjson\msinttypes - - - Header Files\include\rapidjson\msinttypes - - - Header Files\Server\Authentication - - - Header Files\include - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\openssl\internal - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\include\libcurl - - - Header Files\Server\Authentication - - - Header Files\Client - - - Header Files\Client - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\Server\Scripted - - - Header Files\Dedicated Server - - - Header Files - - - Source Files\Exploit Fixes - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files\Math - - - Header Files\Math - - - Header Files\Convar - - - Header Files\Convar - - - Header Files\Convar - - - Header Files\Filesystem - - - Header Files\Hooks - - - Header Files\Exploit Fixes - - - Header Files\Console - - - Header Files\Convar - - - Header Files\Mods - - - Header Files\Mods\Compiled Assets - - - Header Files\Console - - - Header Files\Console - - - Header Files\Game Functions - - - Header Files\Game Functions - - - Header Files\Game Functions - - - Header Files\Mods\Compiled Assets - - - Header Files\Game Functions - - - Header Files\Hooks - - - Header Files\Filesystem - - - Header Files\Math - - - Header Files\Hooks - - - Header Files\Server - - - Header Files\Hooks - - - Header Files - - - - - Source Files - - - Source Files\Dedicated Server - - - Source Files\Client - - - Source Files\Mods - - - Source Files\Mods\Compiled Assets - - - Source Files\Server\Authentication - - - Source Files\Mods\Compiled Assets - - - Source Files\Client - - - Source Files\Client - - - Source Files\Dedicated Server - - - Source Files\Mods\Compiled Assets - - - Source Files\Client - - - Source Files\Server - - - Source Files\Server\Authentication - - - Source Files\Client - - - Source Files\Client - - - Source Files\Client - - - Source Files\Server - - - Source Files\Client - - - Source Files - - - Source Files\Client - - - Source Files\Client - - - Source Files - - - Source Files\Client - - - Source Files\Client\Scripted - - - Source Files\Client\Scripted - - - Source Files\Client\Scripted - - - Source Files\Client\Scripted - - - Source Files\Client\Scripted - - - Source Files\Client\Scripted - - - Source Files\Server\Scripted - - - Source Files\Server\Scripted - - - Source Files\Client - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files\Game Functions - - - Source Files\Game Functions - - - Source Files\Game Functions - - - Source Files\Filesystem - - - Source Files\Filesystem - - - Source Files\Exploit Fixes - - - Source Files\Exploit Fixes - - - Source Files\Hooks - - - Source Files\Hooks - - - Source Files\Math - - - Source Files\Convar - - - Source Files\Convar - - - Source Files\Console - - - Source Files\Console - - - Source Files\Convar - - - Source Files\Convar - - - Source Files\Game Functions - - - Source Files\Console - - - Source Files\Server - - - Source Files - - - Source Files\Hooks - - - Source Files\Exploit Fixes - - - - - Source Files\Client - - - - - Header Files\include\spdlog\fmt\bundled - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\openssl - - - Header Files\include\openssl\crypto - - - Header Files\include\openssl\crypto - - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {d4199e4b-10d2-43ce-af9c-e1fa79e1e64e} + + + {b6f79919-9735-476d-8798-067a75cbeca0} + + + {ca657be5-c2d8-4322-a689-1154aaafe57b} + + + {8596cc1c-0492-4467-91e3-1f03b7e19f77} + + + {11eaa578-6336-456e-9c7c-8bd202470945} + + + {7ecd75d2-7eee-41c4-87b6-3b7c2213f34e} + + + {8afc70f1-639c-49ef-9348-ef6dcece114e} + + + {398efed5-0a92-4d32-b5ba-b4a725b2a70a} + + + {74567974-c66b-45ef-ab28-97b7154ca224} + + + {4ca5392e-7d3d-4066-833f-f534cd5787c3} + + + {94b15898-ef33-41c7-995a-31791fccb7e2} + + + {6495657f-ea55-4552-8aa7-b54eb8e86a99} + + + {85aacdee-0f92-4ec4-b20c-0739c1175055} + + + {3d41d3fc-8a3b-4358-b3e8-4f06dc96abfe} + + + {d69760a9-d5ec-4f3e-8f43-f74041654d44} + + + {365e5c1f-4b2f-4d8b-a1d8-cdef401ca689} + + + {24fd0855-9288-4129-93ba-c6cafdc98d1b} + + + {4cb0dd89-5f16-4549-a864-34ca3075352a} + + + {914d8b8f-6b19-4f23-b746-f40062d72906} + + + {09516029-fac7-4235-ad61-402977534a0b} + + + {8cc1ae44-9dbf-4719-91a2-82e00b8d78e2} + + + {ea1e17a6-40b7-4e1b-8edb-e9ae704ce604} + + + {51910ba0-2ff8-461d-9f67-8d7907b57d22} + + + {325e0d7d-6832-496d-8d8e-968fdfa5dd40} + + + {802d0771-62f1-4733-89f9-57a4d8864b8d} + + + {04fd662a-6e70-494c-b720-c694a5cc2fb1} + + + {a18afb37-5fdd-4340-a6b4-a6541593e398} + + + {4a8a695a-a103-4b1f-b314-0ec19a253119} + + + {d8a83b5e-9a23-4124-824f-eab37880cb08} + + + {2cbddb28-0b17-4881-847d-8773da52b268} + + + {4db0d1e9-9035-457f-87f1-5dc3f13b6b9e} + + + {59b0f68f-daa7-4641-b6fa-8464b56da2bb} + + + {3e892d07-2239-44da-9cf3-c288a34cf9a2} + + + {14fc0931-acad-46ec-a55e-94f4469d4235} + + + {947835db-67d6-42c0-870d-62743f85231f} + + + {bf0769d8-40fd-4701-85e9-7ed94aab2283} + + + {9751b551-5886-45d4-a039-cbd10445263d} + + + {96101d42-72af-4fd1-8559-8d1d1ff66240} + + + {ee3ba13a-3061-41d7-981d-328ac2596fd2} + + + {0c93d909-e0d6-4c35-a8a4-a13f681a1012} + + + {94259c8c-5411-48bf-af4f-46ca32b7d0bb} + + + {44a83740-9d70-480d-9a7a-43b81f8eab9e} + + + {6bbce8a5-38b4-4763-a7cb-4e98012ec245} + + + {826d5193-3ad0-434b-ba7c-dd24ed4bbd0c} + + + {0f1ba4c4-78ee-4b05-afa5-6f598063f5c1} + + + + + Header Files + + + Header Files\include + + + Header Files + + + Header Files\Client + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog + + + Header Files\include\spdlog\cfg + + + Header Files\include\spdlog\cfg + + + Header Files\include\spdlog\cfg + + + Header Files\include\spdlog\cfg + + + Header Files\include\spdlog\fmt + + + Header Files\include\spdlog\fmt + + + Header Files\include\spdlog\fmt + + + Header Files\include\spdlog\fmt + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\sinks + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\spdlog\details + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson + + + Header Files\include\rapidjson\error + + + Header Files\include\rapidjson\error + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\internal + + + Header Files\include\rapidjson\msinttypes + + + Header Files\include\rapidjson\msinttypes + + + Header Files\Server\Authentication + + + Header Files\include + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\openssl\internal + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\include\libcurl + + + Header Files\Server\Authentication + + + Header Files\Client + + + Header Files\Client + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\Server\Scripted + + + Header Files\Dedicated Server + + + Header Files + + + Source Files\Exploit Fixes + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\Math + + + Header Files\Math + + + Header Files\Convar + + + Header Files\Convar + + + Header Files\Convar + + + Header Files\Filesystem + + + Header Files\Hooks + + + Header Files\Exploit Fixes + + + Header Files\Console + + + Header Files\Convar + + + Header Files\Mods + + + Header Files\Mods\Compiled Assets + + + Header Files\Console + + + Header Files\Console + + + Header Files\Game Functions + + + Header Files\Game Functions + + + Header Files\Game Functions + + + Header Files\Mods\Compiled Assets + + + Header Files\Game Functions + + + Header Files\Hooks + + + Header Files\Filesystem + + + Header Files\Math + + + Header Files\Server + + + Header Files\Hooks + + + Header Files + + + + + Source Files + + + Source Files\Dedicated Server + + + Source Files\Client + + + Source Files\Mods + + + Source Files\Mods\Compiled Assets + + + Source Files\Server\Authentication + + + Source Files\Mods\Compiled Assets + + + Source Files\Client + + + Source Files\Client + + + Source Files\Dedicated Server + + + Source Files\Mods\Compiled Assets + + + Source Files\Client + + + Source Files\Server + + + Source Files\Server\Authentication + + + Source Files\Client + + + Source Files\Client + + + Source Files\Client + + + Source Files\Server + + + Source Files\Client + + + Source Files + + + Source Files\Client + + + Source Files\Client + + + Source Files + + + Source Files\Client + + + Source Files\Client\Scripted + + + Source Files\Client\Scripted + + + Source Files\Client\Scripted + + + Source Files\Client\Scripted + + + Source Files\Client\Scripted + + + Source Files\Client\Scripted + + + Source Files\Server\Scripted + + + Source Files\Server\Scripted + + + Source Files\Client + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\Game Functions + + + Source Files\Game Functions + + + Source Files\Game Functions + + + Source Files\Filesystem + + + Source Files\Filesystem + + + Source Files\Exploit Fixes + + + Source Files\Exploit Fixes + + + Source Files\Hooks + + + Source Files\Hooks + + + Source Files\Math + + + Source Files\Convar + + + Source Files\Convar + + + Source Files\Console + + + Source Files\Console + + + Source Files\Convar + + + Source Files\Convar + + + Source Files\Game Functions + + + Source Files\Console + + + Source Files\Server + + + Source Files + + + Source Files\Hooks + + + Source Files\Exploit Fixes + + + + + Source Files\Client + + + + + Header Files\include\spdlog\fmt\bundled + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\openssl + + + Header Files\include\openssl\crypto + + + Header Files\include\openssl\crypto + + + \ No newline at end of file diff --git a/NorthstarDLL/exploitfixes_utf8parser.cpp b/NorthstarDLL/exploitfixes_utf8parser.cpp index 1440e2c7..84b7cbc6 100644 --- a/NorthstarDLL/exploitfixes_utf8parser.cpp +++ b/NorthstarDLL/exploitfixes_utf8parser.cpp @@ -1,5 +1,4 @@ #include "pch.h" -#include "NSMem.h" AUTOHOOK_INIT() @@ -174,7 +173,7 @@ LABEL_48: AUTOHOOK(Rson_ParseUTF8, engine.dll + 0xEF670, bool, __fastcall, (INT64* a1, DWORD* a2, char* strData)) // 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC 20 8B 1A { - static void* targetRetAddr = NSMem::PatternScan("engine.dll", "84 C0 75 2C 49 8B 16"); + static void* targetRetAddr = CModule("engine.dll").FindPattern("84 C0 75 2C 49 8B 16"); // only call if we're parsing utf8 data from the network (i.e. communities), otherwise we get perf issues if (_ReturnAddress() == targetRetAddr && !CheckUTF8Valid(a1, a2, strData)) diff --git a/NorthstarDLL/rpakfilesystem.cpp b/NorthstarDLL/rpakfilesystem.cpp index 46e0e725..bc2195ba 100644 --- a/NorthstarDLL/rpakfilesystem.cpp +++ b/NorthstarDLL/rpakfilesystem.cpp @@ -9,8 +9,7 @@ AUTOHOOK_INIT() // there are more i'm just too lazy to add struct PakLoadFuncs { - void* unk0[2]; - void* (*LoadPakSync)(const char* pPath, void* unknownSingleton, int flags); + void* unk0[3]; int (*LoadPakAsync)(const char* pPath, void* unknownSingleton, int flags, void* callback0, void* callback1); void* unk1[2]; void* (*UnloadPak)(int iPakHandle, void* callback); @@ -22,25 +21,61 @@ PakLoadFuncs* g_pakLoadApi; PakLoadManager* g_pPakLoadManager; void** pUnknownPakLoadSingleton; -void PakLoadManager::LoadPakSync(const char* path) + +int PakLoadManager::LoadPakAsync(const char* pPath, const ePakLoadSource nLoadSource) +{ + int nHandle = g_pakLoadApi->LoadPakAsync(pPath, *pUnknownPakLoadSingleton, 2, nullptr, nullptr); + + // set the load source of the pak we just loaded + GetPakInfo(nHandle)->m_nLoadSource = nLoadSource; + return nHandle; +} + +void PakLoadManager::UnloadPak(const int nPakHandle) +{ + g_pakLoadApi->UnloadPak(nPakHandle, nullptr); +} + +void PakLoadManager::UnloadMapPaks() +{ + for (auto& pair : m_vLoadedPaks) + if (pair.second.m_nLoadSource == ePakLoadSource::MAP) + UnloadPak(pair.first); +} + +LoadedPak* PakLoadManager::TrackLoadedPak(ePakLoadSource nLoadSource, int nPakHandle, size_t nPakNameHash) { - g_pakLoadApi->LoadPakSync(path, *pUnknownPakLoadSingleton, 0); + LoadedPak pak; + pak.m_nLoadSource = nLoadSource; + pak.m_nPakHandle = nPakHandle; + pak.m_nPakNameHash = nPakNameHash; + + m_vLoadedPaks.insert(std::make_pair(nPakHandle, pak)); + return &m_vLoadedPaks.at(nPakHandle); } -void PakLoadManager::LoadPakAsync(const char* path, bool bMarkForUnload) +void PakLoadManager::RemoveLoadedPak(int nPakHandle) { - int handle = g_pakLoadApi->LoadPakAsync(path, *pUnknownPakLoadSingleton, 2, nullptr, nullptr); + m_vLoadedPaks.erase(nPakHandle); +} - if (bMarkForUnload) - m_pakHandlesToUnload.push_back(handle); +LoadedPak* PakLoadManager::GetPakInfo(const int nPakHandle) +{ + return &m_vLoadedPaks.at(nPakHandle); } -void PakLoadManager::UnloadPaks() +int PakLoadManager::GetPakHandle(const size_t nPakNameHash) { - for (int pakHandle : m_pakHandlesToUnload) - g_pakLoadApi->UnloadPak(pakHandle, nullptr); + for (auto& pair : m_vLoadedPaks) + if (pair.second.m_nPakNameHash == nPakNameHash) + return pair.first; + + return -1; +} - m_pakHandlesToUnload.clear(); +int PakLoadManager::GetPakHandle(const char* pPath) +{ + return GetPakHandle(STR_HASH(pPath)); } void HandlePakAliases(char** map) @@ -73,7 +108,7 @@ void LoadPreloadPaks() for (ModRpakEntry& pak : mod.Rpaks) if (pak.m_bAutoLoad) - g_pPakLoadManager->LoadPakAsync((modPakPath / pak.m_sPakName).string().c_str(), false); + g_pPakLoadManager->LoadPakAsync((modPakPath / pak.m_sPakName).string().c_str(), ePakLoadSource::CONSTANT); } } @@ -108,17 +143,22 @@ void LoadCustomMapPaks(char** pakName, bool* bNeedToFreePakName) true; // we can't free this memory until we're done with the pak, so let whatever's calling this deal with it } else - g_pPakLoadManager->LoadPakAsync((modPakPath / pak.m_sPakName).string().c_str(), true); + g_pPakLoadManager->LoadPakAsync((modPakPath / pak.m_sPakName).string().c_str(), ePakLoadSource::MAP); } } } } HOOK(LoadPakAsyncHook, LoadPakAsync, -int,, (char* pPath, void* unknownSingleton, int flags, void* callback0, void* callback1)) +int,, (char* pPath, void* unknownSingleton, int flags, void* pCallback0, void* pCallback1)) { HandlePakAliases(&pPath); + // dont load the pak if it's currently loaded already + size_t nPathHash = STR_HASH(pPath); + if (g_pPakLoadManager->GetPakHandle(nPathHash) != -1) + return -1; + bool bNeedToFreePakName = false; static bool bShouldLoadPaks = true; @@ -139,40 +179,47 @@ int,, (char* pPath, void* unknownSingleton, int flags, void* callback0, void* ca // todo: could probably add some way to flag custom paks to not be loaded on dedicated servers in rpak.json if (IsDedicatedServer() && (Tier0::CommandLine()->CheckParm("-nopakdedi") || strncmp(&originalPath[0], "common", 6))) // dedicated only needs common and common_mp { + if (bNeedToFreePakName) + delete[] pPath; + spdlog::info("Not loading pak {} for dedicated server", originalPath); return -1; } } - int ret = LoadPakAsync(pPath, unknownSingleton, flags, callback0, callback1); - spdlog::info("LoadPakAsync {} {}", pPath, ret); + int iPakHandle = LoadPakAsync(pPath, unknownSingleton, flags, pCallback0, pCallback1); + spdlog::info("LoadPakAsync {} {}", pPath, iPakHandle); + + // trak the pak + g_pPakLoadManager->TrackLoadedPak(ePakLoadSource::UNTRACKED, iPakHandle, nPathHash); if (bNeedToFreePakName) delete[] pPath; - return ret; + return iPakHandle; } HOOK(UnloadPakHook, UnloadPak, -void*,, (int iPakHandle, void* callback)) +void*,, (int nPakHandle, void* pCallback)) { + // stop tracking the pak + g_pPakLoadManager->RemoveLoadedPak(nPakHandle); + static bool bShouldUnloadPaks = true; if (bShouldUnloadPaks) { bShouldUnloadPaks = false; - g_pPakLoadManager->UnloadPaks(); + g_pPakLoadManager->UnloadMapPaks(); bShouldUnloadPaks = true; } - spdlog::info("UnloadPak {}", iPakHandle); - return UnloadPak(iPakHandle, callback); + spdlog::info("UnloadPak {}", nPakHandle); + return UnloadPak(nPakHandle, pCallback); } -// we hook this exclusively for resolving stbsp paths, but seemingly it's also used for other stuff like vpk and rpak loads -// possibly just async loading altogether? - +// we hook this exclusively for resolving stbsp paths, but seemingly it's also used for other stuff like vpk, rpak, mprj and starpak loads HOOK(ReadFileAsyncHook, ReadFileAsync, -void*, , (const char* pPath, void* a2)) +void*, , (const char* pPath, void* pCallback)) { fs::path path(pPath); char* allocatedNewPath = nullptr; @@ -194,9 +241,7 @@ void*, , (const char* pPath, void* a2)) } } - // this is used for reading vpk, rpak, starpak, stbsp, and mprj also - - void* ret = ReadFileAsync(pPath, a2); + void* ret = ReadFileAsync(pPath, pCallback); if (allocatedNewPath) delete[] allocatedNewPath; diff --git a/NorthstarDLL/rpakfilesystem.h b/NorthstarDLL/rpakfilesystem.h index 28b29b52..f8774083 100644 --- a/NorthstarDLL/rpakfilesystem.h +++ b/NorthstarDLL/rpakfilesystem.h @@ -1,14 +1,38 @@ -#pragma once - -class PakLoadManager -{ - public: - void LoadPakSync(const char* path); - void LoadPakAsync(const char* path, bool bMarkForUnload); - void UnloadPaks(); - - private: - std::vector m_pakHandlesToUnload; -}; - -extern PakLoadManager* g_pPakLoadManager; +#pragma once + +enum class ePakLoadSource +{ + UNTRACKED = -1, // not a pak we loaded, we shouldn't touch this one + + CONSTANT, // should be loaded at all times + MAP // loaded from a map, should be unloaded when the map is unloaded +}; + +struct LoadedPak +{ + ePakLoadSource m_nLoadSource; + int m_nPakHandle; + size_t m_nPakNameHash; +}; + +class PakLoadManager +{ + private: + std::map m_vLoadedPaks {}; + std::unordered_map m_HashToPakHandle {}; + + public: + int LoadPakAsync(const char* pPath, const ePakLoadSource nLoadSource); + void UnloadPak(const int nPakHandle); + void UnloadMapPaks(); + + LoadedPak* TrackLoadedPak(ePakLoadSource nLoadSource, int nPakHandle, size_t nPakNameHash); + void RemoveLoadedPak(int nPakHandle); + + LoadedPak* GetPakInfo(const int nPakHandle); + + int GetPakHandle(const size_t nPakNameHash); + int GetPakHandle(const char* pPath); +}; + +extern PakLoadManager* g_pPakLoadManager; -- cgit v1.2.3