Свое название этот вирус получил от строки своего текста : "Cruncher V1.0с". Это слово имеет специальное значение: "crunching" - название одного из популярных методов паковки данных. На первый взгляд вирус является вполне обычным резидентным файловым вирусом. Он оставляет в памяти свою резидентную копию, перехватывает INT 21h и при запуске файлов записывается в них, используя стандартный "джентельменский" набор аккуратного вируса: перехват INT 24h, обработка и сохранение атрибутов и времени создания файла. Но на этом стандартность вируса заканчивается. В момент заражения файла использует алгоритм компрессии данных и пакует зараженный файл. Длина файла, зараженного вирусом, часто становится меньше (иногда значительно меньше) длины исходного файла. При заражении вирус освобождает место на дисках! Алгоритм заражения файлов и их упаковки выглядит следующим образом. При запуске файла на выполнение вирус считывает его содержимое в оперативную память (весь файл целиком), если, конечно, достаточно свободного места:
+-----------------------------------+ файл, считанный в оперативную | Файл | память компьютера (образ файла) +-----------------------------------+
Затем вирус обычным способом заражает считанный файл, но заражение осуществляется в оперативной памяти компьютера. Дописывание вируса и изменение начала файла происходит со считанным в память образом файла. При этом обращения к дискам не происходит.
+---------------------------------+ зараженный образ файла | V +------------------------------------------------------------+ | JMP | Файл | Вирус | +------------------------------------------------------------+
Потом вирус запускает алгоритм упаковки, коды которого содержатся внутри тела вируса. Зараженный образ файла пакуется, начиная с первого байта (команды JMP) и кончая последним байтом вируса. При этом вирус использует алгоритм паковки из популярной утилиты DIET версии 1.10. После упаковки зараженный образ файла выглядит следующим образом: