The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Clamav и проверка RAR архивов версии 3. (virus clamav compress rar)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: virus, clamav, compress, rar,  (найти похожие документы)
From: McMCC <mcmcc@mail.ru.> Newsgroups: http://mcmcc.bat.ru Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Clamav и проверка RAR архивов версии 3. Оригинал: http://mcmcc.bat.ru/clam_rar3.html Всем известно, что в антивирусную программу clamav встроена проверка RAR архивов версии 2, однако большенство пользователей используют для создания своих архивов RAR версии 3 и практически уже никто не использует 2-ю версию, разработчики clamav не хотят встраивать поддержку 3-ей версии из-за лицензионных разногласий между новой версией libunrar, со своей более строгой лицензией, и clamav, который написан под GPL. Пока идут дебаты на тему включать или не включать libunrar v.3 в clamav, мною была предпринята попытка реализовать эту функциональность самостоятельно, поэтому далее будет описан процесс, как скрестить libunrar v.3 с последней версией clamav(на данном этапе - 0.80). В начале нужно собрать и установить последнюю версию libunrar, для этого идем на ftp://ftp.rarlab.com/rar и скачиваем исходники последней libunrar, ftp://ftp.rarlab.com/rar/unrarsrc-3.4.3.tar.gz . Что бы собрать libunrar в нужном нам виде, необходимо наложить этот патч - unrar-3.4.3_fix.patch, сборку осуществляем как: make -f makefile.unix lib Устанавливаем следующим образом: install -s -D -m 755 libunrar3.so /usr/lib/libunrar3.so install -D -m 644 dll.hpp /usr/include/libunrar3/dll.hpp На этом установку libunrar можно считать законченой. Для систем на базе rpm пакетов, можно скачать готовые rpm'ки: TAR_BZ2: libunrar3-3.4.3.tar.bz2 RPMS: libunrar3-3.4.3-1.i386.rpm SRPMS: libunrar3-3.4.3-1.src.rpm Следущим этапом берем свежий clamav из CVS, http://www.clamav.net/snapshot.html#pagestart, можно взять мой архив(за 21.10.2004), в котором включены все нужные патчи: TAR_BZ2: clamav-0.80-1.mc.tar.bz2 После того, как выкачен свеженький clamav из CVS, нужно наложить этот патч - clamav-libunrar3.patch, затем обязательно выполнить 3и команды: aclocal autoconf automake Далее как обычно, конфигурим, собираем и устанавливаем clamav... Мною подготовлены рабочие rpm пакеты, которые не требуют каких либо настроек и работать начинают сразу после установки, но в них отсутствует сборка milter плагина для sendmail'а, при желании ее можно включить, если будете пересобирать из srpm, для этого в spec файле надо выставить _without_milter в 0. RPMS: clamav-0.80-1.fc1.i386.rpm clamav-devel-0.80-1.fc1.i386.rpm SRPMS: clamav-0.80-1.fc1.src.rpm После установки rpm пакетов даем следущие команды: service freshclam start service clamd start и на этом можно считать установку законченной... Теперь немного о том, что сделано: - Проверка саморасспаковывающихся exe архивов созданных RAR 2/3.x - Проверка обычных rar архивов созданных RAR 2/3.x - Непроверяются запароленые архивы, битые, неизвестного формата и многотомные, им выставляется флаг, что они нормальные:)... Все архивы, которые касаются данной темы, вы можете скачать отсюда: http://mcmcc.bat.ru/clamav/ Copyright (C) 2004 McMCC <mcmcc@mail.ru.>
diff -ruN unrar.orig/consio.hpp unrar/consio.hpp --- unrar.orig/consio.hpp 2004-09-08 17:57:20.000000000 +0400 +++ unrar/consio.hpp 2004-10-22 10:43:08.000000000 +0400 @@ -21,12 +21,16 @@ void OutComment(char *Comment,int Size); #ifdef SILENT +/* inline void mprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {} inline void eprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {} inline void mprintf(const char *fmt,int b) {} inline void eprintf(const char *fmt,int b) {} inline void mprintf(const char *fmt,const char *a,int b) {} inline void eprintf(const char *fmt,const char *a,int b) {} +*/ +inline void mprintf(const char *fmt,...) {} +inline void eprintf(const char *fmt,...) {} inline void Alarm() {} inline void GetPasswordText(char *Str,int MaxLength) {} inline unsigned int GetKey() {return(0);} diff -ruN unrar.orig/dll.hpp unrar/dll.hpp --- unrar.orig/dll.hpp 2004-09-08 17:57:20.000000000 +0400 +++ unrar/dll.hpp 2004-10-22 10:43:08.000000000 +0400 @@ -26,13 +26,13 @@ #define RAR_DLL_VERSION 4 -#ifdef _UNIX +//#ifdef _UNIX #define CALLBACK #define PASCAL #define LONG long #define HANDLE void * #define UINT unsigned int -#endif +//#endif struct RARHeaderData { diff -ruN unrar.orig/makefile.unix unrar/makefile.unix --- unrar.orig/makefile.unix 2004-07-26 11:57:26.000000000 +0400 +++ unrar/makefile.unix 2004-10-22 10:44:09.000000000 +0400 @@ -7,9 +7,10 @@ # Linux using GCC CXX=g++ -CXXFLAGS=-O2 -DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +CXXFLAGS=-O2 -fPIC -DPIC +DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DGUI -DSILENT STRIP=strip +RANLIB=ranlib # Linux using LCC #CXX=lcc @@ -114,6 +115,12 @@ $(STRIP) default.sfx lib: WHAT=RARDLL -lib: $(OBJECTS) $(LIB_OBJ) - @rm -f libunrar.so - $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) +lib: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ) + @rm -f libunrar3.so + $(LINK) -shared -o libunrar3.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ) + +liba: WHAT=RARDLL +liba: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ) + @rm -f libunrar3.a + $(AR) rc libunrar3.a $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ) + $(RANLIB) libunrar3.a

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:




  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor