DLLHook - GZip распаковка строки - PullRequest
0 голосов
/ 20 сентября 2009

Я ввожу dll в firefox (браузер) и подключаю WSARecv. Проблема в том, что буфер данных сжат Gzip. Я уже пытался подключить функцию send () и удалить «Accept-Encoding: gzip, deflate», но многие веб-серверы этого не поймут.

Поэтому я попытался распаковать буфер, изменить некоторые вещи и снова сжать их. Поэтому я связал zlib.dll и zlib.lib в свою DLL и написал небольшой класс-оболочку:

int CGZip::DecompressString(char* src, int srcLen, char** destination, int* destLen)
{
 //Define the source, destination, source length, and destination length
 char *dest= new char[(unsigned int)destLen];
 //Decompress the string in src and place it in dest
 int result=uncompress((unsigned char *)dest,(uLongf*)destLen,(const unsigned char *)src,srcLen);
 //Return the results of the decompression
 *destination = dest;
 return(result);
}

Но когда я включаю распаковку в подключенный WSARecv, моя dll больше не будет загружаться (не вызывается DLL_PROCESS_ATTACH). Когда я удаляю следующие 5 строк, DLL снова загружается.

szUncompressed = (char*)malloc((size_t)lpBuffers->len * 100);
CGZip *ziphandler = new CGZip(); 
ziphandler->DecompressString(lpBuffers->buf, lpBuffers->len, &szUncompressed, &iUncompressedLength);
szUncompressed[iUncompressedLength] = '\0';

Есть идеи, почему DLL больше не загружается или как мне легко распаковать и сжать буфер данных?

Заранее спасибо:)

1 Ответ

1 голос
/ 20 сентября 2009

Хорошо, я решил это, мне просто нужно было ввести zlib.dll перед моей собственной DLL, и это сработало:>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...