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

Такие вирусы пишутся в основном на ассемблере, или на худой конец на Си, именно поэтому они имеют такой маленький размер (вспомни знаменитый Чих, последняя версия которого занимает чуть больше килобайта). Ассемблер позволяет полностью взять под контроль систему, причем не важно, стоит на компе винда или старенький дос, все зависит от автора. Краткая классификация вирей. Есть несколько типов таких вирусов: COM-вирусы, заражающие только комики, эти вирусы самые простые из всех (достаточно только сказать, что COM, который грузится и выходит, занимает 2 байта, такую легче писать в блокноте, или хекс-редакторе), EXE-вирусы, которые обычно умеют заражать все исполняемые файлы, то есть Dos'овские и виндозные NE (Win 3.x) и PE (Win 9x, ME, NT, 2000). Причем эти вирусы обычно пишутся профессиональными программистами, они имеют более сложную структуру и разрушительное действие (опять вспомним Win95.CIH, который полностью резидентный, он виснул на нулевом кольце привилегий процессора (есть такое у процов старше 286 в защищенном режиме, этот режим используют все современные ОСи), а операционку принижал в правах, вот так вот, винда отдыхает, кстати так делают некоторые продвинутые отладчики, например, SoftIce).

Теперь кое что о самом заражении, вирус ищет в директории все исполняемые файлы, которые он способен заразить, проверяет, не заражены ли они этим же вирусом, а потом записывает в определенное место в программе свой код, не весь, только тот, что ему нужен для размножения и деструктивных действий. Вирусы могут записать свой код в начало, середину или конец файла, проще всего реализовать последнее, из-за этого часто размер программ слегка увеличивается, некоторые антивирусы проверяют контрольные суммы своих исполняемых файлов, и если они не совпадают с нормальными, выдают юзеру, что сам антивирус заражен. Есть и такие вирусы, которые записывают свой код в пустоты в файле, правда из таких я знаю только знаменитый Чих, файлы, зараженные этим вирусом, не увеличиваются в размерах.

Подробнее о том, как вирус внедряется в файл. Некоторые более-менее продвинутые скажут, что если изменить EXE или COM файл, то ни фига не будет работать, в большинстве случаев, если делать это кривыми руками, то так и случится, но ведь мы рассматриваем вирусы, на то они и вирусы.... В общем заражение происходит так: вирус находит нужный файл, который подходит ему для заражения, записывает в какое-то место свой код, а вот дальше самое интересное и, наверное, самое сложное, точка входа в программу (место кода откуда прога начинает пахать) изменяется вирусом так, чтобы вместо программы начинал работать его (вируса) код, после того как он отработал (заразил другие файлы или ченить напортил), он передает управление программе, но чаще просто восстанавливает в памяти начало программы, и устанавливает регистр EIP процессора (такая штука которая указывает на адрес памяти следующей команды) на настоящую точку в проге, это все делается в оперативной памяти, на диске же файл не изменяется, таким образом если программа не проверяет свой файл на диске на изменения, она не сможет узнать, что она заражена, ведь в памяти нормальный код. Все это происходит с огромной скоростью, так что даже на самой допотопной машине невозможно заметить изменения работы.

После всего этого вирус может начать деструктивные действия или ожидать даты, по наступлению которой он их начнет, чаще так и делается, чтобы вирус успевал распространиться, ведь, например, если он все удаляет с жесткого диска при первом запуске, то никто больше его не скопирует (или он сам не скопируется). Все, что выполняет вирус, зависит только от фантазии программера, вирус может удалить пару файлов, вывести сообщение, а может стереть все с диска и разрушить FlashBIOS (можете скачать в сети исходники чиха и посмотреть как он это делает).

А как делаются антивирусы? Я скажу, что разные по-разному, но сидят дядьки в кабинетах, изучают изменения в файлах после заражения, изучают исходники вируса, потом скидывают это в базу и получается антивирус. Конечно это весьма символически написано, но статья не об этом, пишите на thm@inbox.ru если хотите увидеть статью про создание антивирусов и их работу. На этом извольте попрощаться.