DWORD CScanner::FindAddr(int signatureName) { Signature sig = signatures[signatureName]; HWND hWindow = FindWindow(NULL, L"League of Legends (TM) Client"); DWORD dwPid; GetWindowThreadProcessId(hWindow, &dwPid); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid); DWORD addr = SearchPattern(sig, hProcess, GetModuleInfo(dwPid)); CloseHandle(hProcess); return addr; }
DWORD PFAPI FindPattern(char *szPattern, PFSEARCH *ppf, LPVOID lpvBase, DWORD dwSize) { ZeroMemory(ppf, sizeof(PFSEARCH)); bool invalid = false; ppf->dwLength = GetPatternCB(szPattern); invalid = invalid || !ppf->dwLength; invalid = invalid || !GeneratePatternMask(szPattern, ppf->szMask); invalid = invalid || !GeneratePatternBytes(szPattern, ppf->lpbData); if (invalid) return PF_INVALID; if (ppf->dwLength > MAX_PATTERN) return PF_OVERFLOW; SearchPattern(ppf, lpvBase, dwSize); if (!ppf->dwResult) return PF_NOT_FOUND; return PF_NONE; }