ZF

               Новые советы вирмерам-недоучкам
                           by DrMAD 
               
                             "Вероятно, во   сне    я    бессознательно
                              произнес    формулу    материализации   и
                              нечаянно вызвал из  небытия  это  угрюмое
                              животное.  Загнать  его обратно в небытие
                              мне не удалось..." А. и Б. Стругацкие


    Через мои  руки прошло не так уж много вирусов.  Но ковыряться в их
потрохах - одно из моих любимых занятий.
    Встречаясь с  каждым  новым представителем электронной микрофлоры и
микрофауны,  я невольно сравниваю его с ранее изученными  образцами.  И
прихожу  к неутешительному выводу:  несмотря на то,  что в "лице лучших
своих представителей" современные вирусы далеко ушли  от "студенческих"
поделок, но качество общей массы оставляет желать лучшего.
    Не буду  здесь  останавливаться  на  юридических  и/или   моральных
аспектах вирусописательства. Отмечу только неоспоримый факт: чем грубей
и примитивней алгоритм вируса, тем больше вреда этот вирус приносит.
    Много лет  тому  назад ( в 1992 году ) Вадим Богданов,  "продвигая"
свой  антивирус  antiape,  создал  любопытный  и   очень   поучительный
документ:  "Несколько  советов авторам вирусов".  С тех пор немало воды
утекло... На мой взгляд, назрела необходимость несколько дополнить этот
документ.
    Итак...

    0. Если Вы уж пишете вирусы (что само по себе не так уж и  плохо  и
порой  даже  занимательно  J)  и даже распространяете их (что гораздо
хуже и заслуживает,  как минимум, порицания), то уж постарайтесь, чтобы
Ваши "чада" причиняли как можно меньше вреда.  Помните: хороший вирус -
это тот,  который трудно заподозрить,  заподозрив  -  трудно  выделить,
выделив  -  трудно  излечить,  излечив  -  трудно забыть.  Постарайтесь
удивить своим умением писать качественные вирусы (если уж  больше ничем
другим удивить не можете K ) , а не заставить себя проклинать.

    1. Большинство  вирусов пишутся в предположении их работы в DOS,  в
то время как большая часть пользователей некоторое время  назад перешла
на  работу под различные варианты Windows,  OS/ 2 и пр.  Проверяйте,  в
какой среде Вы работаете, например, так:

    mov  ax, 1600h
    int  2Fh
    or   al,al
    jz   NoWindows
    ...

    Если вирус обнаруживает,  что зараженная им программа  стартует  из
под  Windows,  то  самое лучшее,  что он может сделать - мирно передать
управление оригинальному коду.  И уж  ни  в  коем  случае  не  пытаться
остаться резидентно в памяти, рисовать картинки, играть музыку и пр.

    (Фролов А.В., Фролов Г.В. Защищенный режим процессоров Intel 80286/
80386/80486.-М.: "ДИАЛОГ-МИФИ", 1993.)

    2. Большинство потенциальных жертв вирусов  также  могут  оказаться
программами  в формате Windows.  Будучи заражены,  такие программы,  не
исключено,  начнут при работе "глючить".  Проверяйте, какой именно файл
Вы  пытаетесь  заразить:  если  слово  по  смещению  0х18  в  заголовке
ЕХЕ-программ содержит значение 0х40  или  больше,  то  такую  программу
лучше не трогать.

    (Сван Т. Форматы файлов Windows. М.: Бином, 1995.)

    3. Авторам загрузочных вирусов.  Перед тем, как записать свой код в
boot-сектор  дискеты   или   mbr   винчестера,   убедитесь,   что   там
располагается "настоящий" загрузчик.  Вы ведь все равно прочитаете этот
сектор, чтобы "спрятать" его в другое место, так уж потратьте несколько
команд на проверку, например, по первым байтам:

    cmp  word ptr es:[bx], 33FAh
    jnz  SkipInfect
    ...

    Если Вы  не  сделаете  этого,  то можете "угодить" на другой вирус,
который обосновался там раньше Вас.  Весьма вероятен случай, когда Ваше
"произведение"  и  "произведение"  Вашего  коллеги используют для своих
нужд одни и те же сектора 0-й дорожки винчестера (например, 0/0/7).
    Кроме того,  на  компьютере  может  быть  установлена нестандартная
конфигурация программного обеспечения,  например,  драйвер ADM, чей код
также располагается на 0-й дорожке.
    Результат и в том и в другом случае  очевиден:  компьютер  зависнет
при загрузке K.

    4. Авторам  полиморфных  вирусов.  А  не  забываете ли вы про такую
простую вещь,  как "очередь команд" в процессорах  фирмы  Intel?  Длина
очереди  в  буфере  команд  постоянно возрастает пропорционально номеру
версии процессора:

       8086  - 4  байта
       80286 - 8  байт
       80386 - 16 байт

и пр.
    Кто знает,  какой  длины  будет очередь процессора в "сикстиумах" и
"севентиумах"?  Модифицируя код впереди себя, подстрахуйтесь - сбросьте
очередь командой "холостого" перехода:

       mov word ptr Int21, 021CDh
       jmp Int21
Int21: nop
       nop

    (А. Щербаков. Защита от копирования.-М.: Эдель, 1992 )

    5. Оформляйте код своего вируса аккуратно и красиво.  Помните, рано
или  поздно  Ваш  вирус будет пойман и отправлен на "вскрытие".  Так уж
позаботьтесь о внешнем виде своей "публикации".
    Уверяю Вас,  код  вируса  с  многочисленными  переходами  в  разных
направлениях,  с "оборванными концами" нереализованных процедур и  пр.,
ненамного  усложняет  процесс  исследования  алгоритма,  зато  вызывает
брезгливое чувство,  сходное с тем, какое возникает при виде заляпанной
кляксами   и   жирными   пальцами,   криво  и  безграмотно  заполненной
ученической тетради.
    Если Вы не уважаете весь остальной мир, то хоть уважайте себя.

    6. Лучший  способ  проверки  "качества"  вируса  - запустите его на
собственной машине.  Ах,  Вы боитесь?  Вы  не  предполагаете,  к  каким
повреждениям  это может привести,  и не знаете,  как от своего "детища"
избавиться?
    Тогда займитесь  лучше "разведением опенков в сухой местности". Вам
противопоказано  писать  вирусы  и  программировать  вообще.  Извините,
конечно, но это суровая правда J


(C) NF, 1998-2004