[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 2, May 1997                                           file 002


                       ВИРУСЫ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ
                                                         (c) by RedArc

     В  связи  с  интересом  к  вирусам  данного класса у программистов, слабо
разбирающихся   в  премудростях  языка  Assembler,  я  решил  посвятить  эту и
несколько следующих статей написанию вирусов именно на языках высокого уровня.
Для  этого есть и еще одно основание: многие пытаются воспроизвести алгоритмы,
описанные  в  вирлисте  программы  DrWeb. Дык хочу заявить: нет там нормальных
алгоритмов.  Все  приведенные  подробные  описания  вирусов Даниловым служат в
основном  для  заведения в тупик широких масс начинающих гениев вирмейкерства.
По  этому все же хочу пожелать читателям побыстрее освоить asm и выйти на куда
более широкий простор для подобного рода деятельности.
     И  так,  с  чего же начать? Разумеется с выбора языка программирования. У
каждого  из  них есть свои достоинства и недостатки на сей счет. Ниже мы будем
рассматривать  Microsoft  Quick  Basic  4.5  и  Borland  Turbo  Pascal 7.0 как
наиболее  распространенные,  а  главное,  имеющиеся  у  меня сейчас под рукой.
Возможно в следующих issue мы вернемся еще к рассмотрению написания вирусов на
фортране или чем то подобном, а сейчас хватит и этой информации.

Критерием выбора могут служить:
 - собственно, а какой вы знаете;
 - простота и скорость написания;
 - размер тушки вируса;
 - экзотичность вируса;
 - ...................
 - "орел" или "решка" от подброшенной над клавиатурой монетки.

     Перед   тем,  как  сделать  окончательный  выбор,  советую  подумать  над
следующей  информацией:  вирусы  на Pascal'е писать проще и код зверушки будет
гораздо  меньшим. У языка же Бейсик есть масса других достоинств: экзотичность
вируса, использование "сервисных" процедур, типа CHAIN (безвозвратная передача
управления  другой  программе),  что  позволит  создать  вирус  с  куда  более
интересным механизмом работы, чем принятые де-факто.

     Ну  наконец  то  с  языком  мы  разобрались. Теперь нужно прикинуть общую
структуру  вируса и его функциональные особенности. Здесь, как и при написании
любой  другой  программы,  существует  широкий  простор  для  полета фантазии,
начиная  от  близкого воспроизведения алгоритмов вирлиста, до создания чего то
собственного  и навороченного. Ну к примеру можно разделить вирусы, написанные
на языках высокого уровня на три основные категории:
- записывающиеся поверх программного кода (HLLO);
- вирусы-спутники (HLLC);
- вирусы-паразиты (HLLP).
     Я  предлагаю  следующую  структуру  нашего  будущего вируса, как наиболее
оптимальную (во всяком случае для часа ночи, когда писалась эта статья).

1. Поиск программ в текущем каталоге.
2. Анализ найденной программы на наше в ней присутствие.
3. Инфицирование проги.
4. Выполнение программы-носителя (если возможно).
5.  Поиск  каталогов  по  PATH с переходом в найденные каталоги для выполнения
пунктов 1-3.

     Сразу  оговорюсь,  что проход всего дерева каталогов, не является хорошим
тоном  при  написании  вируса  подобного класса. Во первых, это долго даже для
одного  диска.  Во  вторых,  вирусы  HLL  имеют склонность к большим размерам.
Прикиньте, а хватит ли вам места на переполненном и без вируса диске C:? Может
так  оказаться,  что  вирус будет обнаружен из-за тормознутости и безудержного
аппетита  к  дисковой  памяти,  сразу  после  того,  как  был  запущен  первый
инфицированный  файл  на  выполнение.  Вы разве этого ждете от вируса? Гораздо
более  оптимально  осуществить  проход  каталогов  из PATH и поразить не более
десятка  файлов  за  раз. Вероятность того, что эти файлы запустят в следующий
раз  очень  высока,  да  и  что  их  могут  скопировать на другой комп тоже не
маленькая (к примеру: C:\AIDSTEST;C:\DRWEB;C:\RAR;C:\ARJ;D:\DOOM).

Ну  вот,  общее  представление  о  структуре  вируса мы уже имеем. Теперь пора
пускать в ход наши скромные познания в программировании...