Нет приятней и полезней венерических болезней! Dr.Klouniz Спецвыпуск Xakep, номер #035, стр. 035-066-2 Например, интересен способ поиска доступных файлов с помощью… FAR the File Manager. Так вот, ты никогда не задумывался, зачем в корне диска находится файл «Tree.far»? А ведь это – обычный текстовый файл с полным списком всех директорий и поддиректорий текущего диска. Остается одно – открыть этот файл и построчно (процедуру ReadLn помнишь? :)) искать в каждой директории exe-файлы. Слава богу, для этой цели в WinApi есть функции FindFirstFile/FindNextFile, возвращающие тебе указатель на файл, соответствующий критериям (c:\*.exe – чем не критерий?). Создатели языков программирования создали свои варианты этой функции, например, для Delphi это – FindFirst. Так, например, может выглядеть циклический поиск всех exe-файлов в заданной папке: result:= FindFirst ('*.exe',faAnyFile,sr); WHILE Result= 0 DO begin //Процедура заражения должна быть здесь ;) FindNext (Sr); end; Ну, допустим, файл мы нашли Что дальше? А дальше - все зависит от алгоритма заражения, выбранного автором. Давай посмотрим на самые популярные из них. Вирусы – оверрайтеры (high level language overwrite) Можно ли назвать это заражением, я не знаю, потому что эти злодеи просто перезаписывают прогу-жертву своим телом. Как это делается? API- функция CreateFile или дельфийская ReWrite (var F: File, обнуляющая существующий файл) помогут тебе в этом. Размножение виря происходит обычно с помощью функции CopyFile, поскольку ничего большего там и не требуется. В итоге - при попытке запуска «проги» юзер ловит сообщение в духе «stack overflow» или “seek error in drive C”. То есть – правдоподобное объяснение, почему прога работать не будет. А вот вирус – работает и с большим удовольствием портит другие файлы своим присутствием. Писали эти вири в основном злобные школьники, поэтому, помимо своей деструктивной деятельности, они выводили длинные и зачастую оскорбительные тексты. Больше ничего примечательного в них нет, сейчас они почти не встречаются, поэтому я советую тебе о них забыть :). Вирусы – компаньоны (high level language companion) Это более современный способ, существующий, однако, уже лет 15. В этом случае вирус переименовывает найденный файл, снабжает его атрибутами только чтение+скрытый+системный, а оригинальное имя присваивает себе. В итоге юзер, запуская, скажем, iexplore.exe, запускает вирус, который, сделав свое дело, запускает оригинальный файл, и юзер даже не замечает, что файл заражен. В старые времена эти вирусы поступали чуть по-другому – брали имя файла-жертвы и создавали свою копию, но с расширением .COM. Если юзер набирал в командной строке только имя файла (без расширения), то дос, который первым ищет com-фай, запускал сначала вирус. «Почему же этот алгоритм жив до сих пор, раз все лечение заключается в обратном переименовании файла-жертвы?» - спросишь ты и будешь абсолютно прав. Действительно, описанный мной способ легко обратим, но так никто и не делает :). Обычно вирус шифрует первые 512 байт или весь исходный файл – допустим, взаимообратимыми командами, вроде XOR/XOR, ADD/SUB, INC/DEC и т.п., но иногда встречаются и алгоритмы, способные вогнать в тоску самого И.Данилова :). Таким образом, этот способ является весьма эффективным и в плане надежности – нет необходимости читать и писать из работающего файла, что чревато очень подозрительными ошибками. А когда текстовый редактор на фоне полного здоровья вдруг жалуется на невозможность что-то куда-то записать, это наводит на соответствующие мысли. |