Привет.
В общем подал Януш Миловски очень неплохую идею - обламывать DrWeb'a,
путем подсовывания ему сигнатур. Все его успехи булы опубликованны в
IV#15,но он был платным,да еще и печатным :). Вобщем Януш сказал,что он
такое сделал,но как признаваться не хотел..Вот и пришлось убить день на
расковыривание DrWeb'a.
Будем надеятся,что я его (c) не подпорчу :)
И так...
1. Как работает DrWeb
DrWeb себе спокойно грузится,загружает базы данных и начинает проверять
файлы (бут-сектора и тп). Проверка делится на три этапа - эмуляция кода,
проверка эвристикой и сигнатурный поиск.
a) Эмуляция кода. Ну...это уже и так всем извеcтно.
Достаточно много в этом направлении сделал SSR и Януш,а я только
немного довел до ума саму идею (см. WebBugger+). Сделано для
расшифровки шифрованных вирусов
b) Эвристика. Ну...это тоже всем известно.. Читайте доки.
c) А вот на сигнатурном поиске я хочу остановится
И так,DrWeb имеет некоторые базы данных. В них находятся записи
о вирусах. Вообще сама сигнатура занимает 16 байт,но остальные
байты оной заполнены различной информацией - как лечить файл и
тп.
( cтруктура в Сишном формате )
struct sig
{
byte sig1_byte; // Байт сигнатуры
word sig1_ofs; // Смещ. от текущ. позиции до данного байта
byte sig1_len; // Длина CRC кода начиная с позиции sig1_ofs
word sig1_CRCL; // Собственно сам CRC код
word sig2_CRCH;
byte sig2_byte; // Аналогично sig1_xx,но если sig2_len = 0,
byte sig2_ofs; // то данная часть отсутствует
byte sig2_len;
word sig2_CRCL;
word sig2_CRCH;
... some useless shit ;)
};
Так вот,DrWeb открывает файл,в зависимости от формата указывает
на начало программы и проходит все сигнатуры. Если совпало ,
осведомляет user'a. Если нет,то DrWeb пропускает одну комманду
и проверяет снова.
Так несколько раз (сколько - я не определял)
2. Что же со всем этим делать ?
Да все что угодно - от прикалывания над начинающими трейдерами
:),до скрывания под чем угодно.
3. Приложение
Да,я написал пару утилит,которые помогут немного облегчить жизнь
И так,это:
a) Откомментированные куски кода отвечающие за сравнение
сигнатур DrWeb'a (директория CODE)
b) Программа "Радость коллекционера",которая просто
создает файл с сигнатурой. Но (!) данная программа не
заполняет оный мусором - файл на выходе состоит из
одних нулей и с некоторыми вкраплениями сигнатуры.
(директория LAME)
c) Небольшая выдиралка сигнатур. (директория sniff)
1) Распаковаете DrWeb для DOS (CUP386'ым напр.)
2) Запускаете patcher.com
3) если все успешно - запускаете sniffer.com,
запускаете DrWeb и тестируете один (!) файл.
ВНИМАНИЕ: Так как один файл тестируется на
сигнатуры многократно,то прийдется взять то число,
которое DrWeb пишет внизу (кол-во вирусов),
умножить на 16 и в hiew'e (или написать прогу)
урезать размер до данного числа. Иначе у вас
будут многократные вхождения одной и той-же
сигнатуры .
d) Пример вирусов (директория Vir)
Deviator/HAZARD.
|