Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 48 8B 1D ? ? ? ? 74 40
- #define SIG_UWORLD "\x48\x8B\x1D\x00\x00\x00\x00\x74\x40"
- #define MASK_UWORLD "xxx????xx"
- static UWorld* GetUWorld()
- {
- DWORD addr = (DWORD)SignatureScan(SIG_UWORLD, MASK_UWORLD);
- if (!addr) return NULL;
- DWORD offset = *(DWORD*)(addr + 3) + 7;
- return *(UWorld**)(addr + offset);
- }
- static void* SignatureScan(char* pattern, char* mask)
- {
- MODULEINFO modInfo = GetModuleInfo(L"TslGame.exe");
- DWORD size = modInfo.SizeOfImage;
- DWORD base = (DWORD)modInfo.lpBaseOfDll;
- DWORD patternLength = (DWORD)strlen(mask);
- for (DWORD i = 0; i < size - patternLength; i++)
- {
- bool found = true;
- for (DWORD j = 0; j < patternLength; j++)
- {
- found &= mask[j] == '?' || pattern[j] == *(char*)(base + i + j);
- }
- if (found)
- {
- return (void*)(base + i);
- }
- }
- return NULL;
- }
- static MODULEINFO GetModuleInfo(wstring moduleName)
- {
- MODULEINFO modInfo;
- HMODULE hModule = GetModuleHandle(moduleName.c_str());
- GetModuleInformation(GetCurrentProcess(), hModule, &modInfo, sizeof(MODULEINFO));
- return modInfo;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement