┌──┬──┐          /╔════╗/╦══╗ /╔═══╗  ╔═══╗ /╔══╦══╗/╦   /╦/╦══╗ /╔═══╗ ╔═══╗
   │┬  ┌──       │║   /╩│║ /╚╗│║  /  │║  │║ // │║ //│║   │║│║ /╚╗│║  /╩│║ │/╩
   │├─┐│ ░░▒▒▒▓▓▓│║▓▓▓▓▓│║▓/╔╝│║▓▓▓▓▓╔╩═══╩╗▓▓▓│║▓▓▓│║▓▓▓│║│║▓/╔╝│║▓▓▓▓│║▓▒▒░
   ││ │├─        │║     │╠══╣ │║═   │║    │║   │║   │║   │║│╠══╣ │║═   /╚═══╗
   ││ ││         │║   /╦│║  ╚╗│║  /╦│║    │║   │║   │║   ╔╝│║  ╚╗│║  /╦ ╦  │║
   │┴ ┘└─┘       /╚════╝/╩  /╩/╚═══╝/╩    /╩   /╩   /╚═══╝ /╩  /╩/╚═══╝/╚═══╝
   │ THE CREATURES │ Computer Virus Magazine │ March 1999            issue 02
   │───────────────┴─────────────────────────┴───────────────────────────────
   │
   │                    РАЗБОР РАБОТЫ HLLP-ВИРУСОВ

═══════════════════════════════════════════════════════════════════════════════


        Что-ж, если вы не писали вирусов раньше, и желаете поскорей этим
 заняться но в то же время ни бу-бу в ассемблере, то, пожалуй, лучший тип
 вирусов для вас - HLLP.
     Что  такое  HLLP?  HLL  -  это High Level Lanquage, то есть язык высокого
 уровня  (ЯВУ).  За  язык  высокого  уровня на практике счиитается практически
 любой  язык,  окромя  машинного  кода,  аkа  Ассемблера. Например, Pascal, C,
 Kobol,  Forth,  Prolog, Fortran, Logo, Ada, Basic. Вот. Ну так какой выбирать
 вам - дело в общем-то ваше, вы поймете это, дочитав статью до конца.
     Итак, приступим.

                        1. Требования к ЯВУ.
       На чем лучше всего писать вирус? Несмотря на кажущуюся простоту,
 вопрос этот довольно хитрый. Вирусы - тот уникальный тип ПО, который все-таки
 лучше писать на Ассемблере. Я не буду уточнять, почему, быть может, вы сами
 поймете это, написав свой первый вирь.
       Но все-таки, если человек не знает Ассемблера? Что-ж, если вы знаете
 3-4 языка и не владеете Ассемблером, то это ваш выбор, но большинство все же
 может действительно что-то написать на одном-двух языках. Ведь для того,
 чтобы написать вирус, необходимо довольно ГЛУБОКОЕ ЗНАНИЕ языка и хотя бы
 общие принципы работы с диском. Так что, решайте сами.

                        2. С чего начать.
       Как правило, при написании любой довольно объемистой программы, если
 толком не знаешь, как конкретно она будет функционировать, встает вопрос
 "а с чего начинать?" Так с чего же начинать при написании вируса?
       Во-первых, продумайте схему действий вируса. Если отбросить маскировку,
 то у простого вируса действия разбиваются на три части:
                (вирус сидит на носителе)
               ■ Поиск новой жертвы
               ■ Заражение ее (их)
               ■ Сосуществование с носителем
       Для начала рекомендую отработать эти действия в отдельности. Попробуйте,
 например, написать программу, выводящую на экран список EXEшек в текущем
 каталоге :) Просто? Тогда напишите прогу, выводящую такой же список, но для
 нескольких каталогов (например, для всех SUB-DIRs корня). Такой алгоритм уже
 пойдет для использования в вирусе.
       Затем выберите способ заражения жертвы. Приблизительное описание их
 см в ISSUE 01, статья 005. Самый простой - тип companion, когда "носитель"
 хранится в отдельном файле, а вирус имеет оригинальное имя носителя.
       Ну и наконец, подумайте, а как вирус будет запускать самого носителя.
 Ведь если программа не работает, это вызывает подозрения. То есть, если вы,
 скажем, выбрали метод companion, то напишите алгоритм переименования носителя
 в *.EXE и запуска его. Помните также, что, в зависимости от языка, к
 запускающей процедуре могут предъявлятся всяческие требования, например, в
 Pascal'е необходимо во-первых ограничить память для работы вира, а во-вторых
 использовать команду swapvectors. Подробнее смотри в HELP'е к языку.
       Пример вира приведен в creature.006

-------------------------------------------------------------------------------
                   ОСНОВЫ РАБОТЫ НА ЯЗЫКЕ НИЗКОГО УРОВНЯ
-------------------------------------------------------------------------------

        Я не буду описывать принципы работы на ассемблере. Если вы вообще
 не знаете ассемблера, купите книжку, или спросите умного товарища, или
 пришлите письмо к нам "в редакцию", типа там, "научи меня ассемблеру".
 В журнале же будут две вещи: 1. Что необходимо знать
                              2. Примерные процедуры
 разумеется, вещи относится к вирусам.
        Что же надо знать для того, чтобы написать вирус на языке низкого
 уровня? (предполагается, что работу с Ассемблером вы освоили)
        Во-первых, весьма полезно вам будет достать документацию к
 MS-DOS, только, конечно, профессиональную. Там-то вас и научат работе
 с файлами, что необходимо для разработки вируса. Можете начать с
 COM NO-TSR. Вообще MS-DOS - хорошая штука. Имеет много полезных программ,
 то есть подпрограмм, которые грех не использовать.
        Во-вторых, достаньте исходник простого вируса, желательно, конечно,
 с комментариями, причем с подробными. Могу посоветовать книжку Хижняка П.Л.
 "Пишем вирус и антивирус", правда она галимая, но для начала сойдет. Также
 посмотрите в вирусных журналах.
        Ну и наконец, главное - желание, стремление создать собственный
 техно-организм. Слышите? СТРЕМЛЕНИЕ СОЗДАТЬ, а не наблюдать за плодами
 разрушений, тем более, что это плохой дебют. Если вы так и не поняли,
 что значит СОЗДАТЬ ВИРУС, и не беритесь за это дело.