Сравнение строковых имен содержащихся в вирусеПервый, самый простой и естественный, заключается в посимвольном сравнении строковых имен, содержащихся в вирусе, с элементами «Таблицы имен» динамической библиотеки «KERNEL32. DLL». В этом случае в теле вируса имена функций обычно видны «на просвет», и по ним можно с достаточной степенью уверенности без дизассемблирования определить основные свойства и повадки «заразы». Разглядывая, например, дамп вируса Win32.Idyll.1556, можно без труда догадаться, что он крайне прост и непритязателен, обнаруживает свои «жертвы» поиском в текущем каталоге, а при заражении использует для хранения своих временных данных динамическую память: Второй подход более необычен и красив. Он предусматривает сравнение не полных строк, а контрольных сумм и хеш-функций от них, например CRC-32. Считается, что впервые этот прием был использован в вирусе Win32.Parvo, а позже воспроизведен в нескольких десятках других вирусов. Любопытно, что хотя алгоритм CRC-32 можно было сравнительно легко оформить самостоятельно, практически все вирусы используют один и тот же код. Код написан достаточно аккуратно и действительно вычисляет стандартную хеш — функцию CRC-32 для блока данных, начальный адрес которого указан в регистре ESI, а длина — в EDI:

Чтобы разобраться в алгоритме вирусов, действующих по подобному принципу, вирусологу необходимо иметь табличку с заранее рассчитанными CRC для имен системных сервисов. Например, строка ‘FindFirstFileA’ имеет CRC-32, равный 0C9EBD5CEh ; строка ‘CreateFileA’ — 553B5C78h и т. п. Есть вирусы, которые используют и другие контрольные суммы и хеш-функции. Например, Win32.Tecata.1761 рассчитывает хеш, состоящий из двух первых букв и арифметической суммы кодов всех символов имени функции. Забавно, что в своих электронных журналах и на интернет-форумах многие авторы подобных странных алгоритмов почему-то именуют их тем же самым именем «CRC», что на самом деле означает «циклический избыточный код» и ничто иное. Видимо, в вирусописатели часто идут обиженные школьники, схватившие «пару» по информатике.

Еще интересные статьи :