┌──┬──┐ /╔════╗/╦══╗ /╔═══╗ ╔═══╗ /╔══╦══╗/╦ /╦/╦══╗ /╔═══╗ ╔═══╗
│┬ ┌── │║ /╩│║ /╚╗│║ / │║ │║ // │║ //│║ │║│║ /╚╗│║ /╩│║ │/╩
│├─┐│ ░░▒▒▒▓▓▓│║▓▓▓▓▓│║▓/╔╝│║▓▓▓▓▓╔╩═══╩╗▓▓▓│║▓▓▓│║▓▓▓│║│║▓/╔╝│║▓▓▓▓│║▓▒▒░
││ │├─ │║ │╠══╣ │║═ │║ │║ │║ │║ │║│╠══╣ │║═ /╚═══╗
││ ││ │║ /╦│║ ╚╗│║ /╦│║ │║ │║ │║ ╔╝│║ ╚╗│║ /╦ ╦ │║
│┴ ┘└─┘ /╚════╝/╩ /╩/╚═══╝/╩ /╩ /╩ /╚═══╝ /╩ /╩/╚═══╝/╚═══╝
│ THE CREATURES │ Computer Virus Magazine │ issue 01
│───────────────┴─────────────────────────┴───────────────────────────────
│
│ ЧТО НАДО УМЕТЬ, ЧТОБЫ НАПИСАТЬ ВИРУС
═══════════════════════════════════════════════════════════════════════════════
Что-ж, допустим вы решились таки на написание вируса. Как бы не так!
Не такое это и простое дело. Если вы еще неопытный программист, советую
вам сначала потренироваться на отдельных функциях вируса - поиск файла,
заражение, ну и т.п. Также надо решить, а на чем собственно писать свой вирус.
Итак...
3. На чем пишут вирус.
Могу с уверенностью сказать - на всем, что попало. Да-да, вовсе не
обязательно знать АССЕМБЛЕР (именно АССЕМБЛЕР, а не ассемблер - чтоб страшнее
выглядело). Я встречал вирусы, написанные на BAT-языке! Тут только одно
ограничение - язык должен позолять работать с диском, ну, все такое.
А так - BASIC (visual:), Pascal, C, Clipper, Forth, VB Macro :))) ...
Но учтите, скажем, на Бейсике нормального вируса у вас не выйдет.
Вот на Паскале там, или Си уже кой-чего, но все равно... Все-таки
Assembler - пожалуй, лучшее средство, ибо только он позволяет добиваться
от машины именно ТОГО, ЧЕГО НАДО, а не той лабуды компиляторов. В любом
случае написание вируса заставит вас глубже изучить программирование
на том языке, который вы выбрали. Другое дело, что если, например, в
ассемблере вы вообще не бум-бум, то для начала сойдет и Паскаль, но
вообще ASM'ом надо бы заняться...
═══════════════════════════════════════════════════════════════════════════════
Ладно с закончили, теперь несколько практических советов.
Если на написание вируса вас двигает желание сделать гадость ближнему своему,
то ни хрена у вас не выйдет. Если вы все-же закончили, отладили (О-о-о-о...:)
свое творение, то радость от создания окончательно заглушит желание
деструкции (I hope..)
Если вы используете язык высокого уровня (не asm), то вас, наверно, интересуют
способы заражения файлов. Таких способов несколько. Во первых, можно
переименовать старый файл в какой-нибудь *.OVL, а на его место поставить
свой вир. Прикол тут в том, что если "умный чукча" решит удалить "лишний"
файл, то таким образом, он сам же сотрет оригинал :) Второй способ
заключается в том, что оба файла - и вирус, и жертва - храняться в одной
EXEшке. Тогда при запуске ее первым запуститься вир, который отделит
тело жертвы и запустит после выполнения всех необходимых операций, заражения
там и тому подобное. Еще были варианты, когда в EXEшке первым идет вир, потом
оригинальный файл, а потом начало этого оригинала, на место которого записался
вирус. Это для повышения скоpости pаботы.Недостатки этих способов ясны - стоит
перерубить комп во время работы носителя, как файл становится излечен. Конечно,
с этим можно бороться, скажем, изменяя что-нибудь перед запуском
(ren c:\command.com c:\recycled\command.com) и восстанавливая это при выходе,
но это уже изврат (хотя и прикольно).
В вирусе ОБЯЗАТЕЛЕН элемент, различающий файлы, которые УЖЕ (заражены),
от тех, которые ЕЩЕ (нет). Простейший способ - сравнивание N байт в теле
вируса, например, в первом своем вирусе я использовал 3-й и 4-й байты
хедера EXEшки.
Также поможет аpхивиpование виpа каким-нибудь LZEXE, только убеpите
лейбл 'LZ' из файла!
Помните - лучшая проверка вируса - применение его на практике!
═══════════════════════════════════════════════════════════════════════════════
С уважением,
(я надеюсь не) надоевший уже ThePretender