Я ввожу 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 больше не загружается или как мне легко распаковать и сжать буфер данных?
Заранее спасибо:)