[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 5, May 1998 file 006
Вирус Spreader
by TAVC & FRiZER
Здесь приведено краткое описание технологии, о которой совсем еще недавно
ходили жаркие споры из одной фидошной конференции в другую... Эта технология -
полный симбиоз. Сама идея зародилась в группе TAVC еще года два назад,
генератором ее был Alternative Coder. Реализацию в коде и дальнейшее развитие
этой идеи сделали Thesaurus и FRiZER. А в вирмейкинг эта идея пришла всего
лишь полгода назад. Работа над вирусом Spreader на протяжении этих двух лет то
разгоралась с новой силой и энтузиазмом, то снова гасла и откладывалась в
долгий ящик. Но мусолить технологию такое длительное время нельзя. Поэтому мы
предлагаем ее вам "as is". Идея состоит в том, что вирус содержит таблицу вида
<смещение команды/блока команд>, <длина команды/блока команд>
Hаходя очередной .com-файл, он ищет в нем соответствующие куски кода и
оформляет таблицу. Если участок кода не найден, то он дописывается в конец
заражаемого файла. Только после всего этого первые n байт записываются в конец
программы. Таким образом, не зная первоначальную длину файла, полностью
удалить вирус из него нельзя, т.к. невозможно различить конец старого файла и
начало участка не найденых блоков кода.
Дальше. Вирус не имеет подозрительного кода - он разбросан по всему телу
старой программы. Есть только обработчики Int 1h и Int 3h. В каждом блоке (в
процессе выполнения кода вируса) первая команда генерирует Int 1. Обработчик
смотрит на адрес возврата и сравнивает с <смещение>+<длина>. Если не равны, то
трассировка прекращается, после блока ставится breakpoint и он запускается.
Иначе - блок состоит из одной команды, переходим к следующему. Hомера блоков
индексируются регистром bp. Соответственно, меняя bp, можно делать переходы из
одного блока в другой, циклы и т.п. Команды 'Int xx' не трассируются, а
эмулируются (см. исходник). В зависимости от заражаемого файла, к нему
приписывается разное количество кода. Почти наверняка CD 21 ни к одному файлу
приписано не будет, т.к. есть в программах.
Технология fullsimbioz сейчас находится в отладке, по этому мы предлагаем
вам только первую бетта-версию, напичканную отладочной информацией. Если
определена константа Debug, то вирус будет выводить отладочные сообщения. Если
определена константа DebugInt, то обработчики будут печатать '1' (Int 1), '3'
(Int 3) и т.п. При известной сноровке можно быстро определить, где
повисла/зациклилась/неправильно сработала программа.
основной файл - main.asm
файл myxa.bat - для генерации жертв - без параметров источником будет
являться test.coz - если укажешь имя файла - он его сделает жертвами.
Все, что относится к вирусу (еще не совсем вирусу) находится в каталоге
APPENDIX.SOU, поэтому, при желании вы можете разобраться во всем сами или
сделать что-либо подобное сами.