[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,  поэтому,  при  желании  вы  можете разобраться во всем сами или
сделать что-либо подобное сами.