예제 #1
0
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;
}
예제 #2
0
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;
}