MCPcopy Create free account
hub / github.com/Do0ks/GSpots / GetVersionFromMemoryScan

Function GetVersionFromMemoryScan

UEVersionScanner/UEVersionScanner.cpp:86–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84}
85
86std::string GetVersionFromMemoryScan() {
87 HMODULE hModule = GetModuleHandleA(NULL);
88 if (!hModule)
89 return "";
90 MODULEINFO modInfo = { 0 };
91 if (!GetModuleInformation(GetCurrentProcess(), hModule, &modInfo, sizeof(modInfo)))
92 return "";
93 char* baseAddr = reinterpret_cast<char*>(modInfo.lpBaseOfDll);
94 size_t moduleSize = modInfo.SizeOfImage;
95 if (!baseAddr || moduleSize == 0)
96 return "";
97 std::vector<std::string> markers = { "Unreal Engine 4.", "Unreal Engine 5.", "FEngineVersion", "EngineVersion" };
98 for (const auto& marker : markers) {
99 size_t markerLen = marker.length();
100 for (size_t i = 0; i < moduleSize - markerLen; i++) {
101 if (memcmp(baseAddr + i, marker.c_str(), markerLen) == 0) {
102 std::string found(marker);
103 size_t maxExtra = 32;
104 size_t j = i + markerLen;
105 while (j < moduleSize && (j - (i + markerLen)) < maxExtra && isprint(baseAddr[j])) {
106 found.push_back(baseAddr[j]);
107 j++;
108 }
109 return found;
110 }
111 }
112 }
113 return "";
114}
115
116std::string GetVersionFromProcessMemory(HANDLE hProcess) {
117 HMODULE hMod;

Callers 1

GetUnrealEngineVersionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected