[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).
Ну вот, общее представление о структуре вируса мы уже имеем. Теперь пора
пускать в ход наши скромные познания в программировании...