Новые советы вирмерам-недоучкам
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
|