Сигнатуру для поиска вполне могут составить 10 байтов вируса, расположенных недалеко от точки входа, например «8B DD 81 ED 05 10 40 00 81 EB». Полное «исцеление» программы невозможно, поскольку вирус необратимо уничтожает содержимое секции перемещаемых ссылок. Поэтому вполне приемлемо, например, заполнить кодами команды «NOP» вредоносные байты, начиная с адреса 40421Ch, — вирус перестанет размножаться, но по-прежнему будет возвращать управление в программу-носитель. Другой способ: извлечь старый RVA точки входа и вернуть его на законное место в PE-заголовке. После того как вирус будет обезврежен, его тело можно просто «зачистить» нулями — чтобы не «вздрагивали» антивирусы. В результате более подробного анализа вирусного кода можно сделать следующие интересные выводы. Признак зараженности вирусом Win32.Barum.1536 — байты 42h и 52h в поле контрольной суммы MZ-заголовка. Напишите простенькую программу-вакцинатор, которая обходит все EXE-файлы диска и устанавливает для них признак зараженности. Вирус не тронет их. Интересен способ обращения вируса к системным сервисам. Вирус заражает все EXE-файлы подряд, но, стартовав из зараженной программы, первым делом ищет в собственной таблице импорта адрес API-функции «GetModuleHandleA». Он делает это, чтобы получить адрес библиотеки «KERNEL32.DLL» и прямым сканированием таблицы экспорта найти в ней адреса нужных ему API-функций. Обратите внимание: сей замечательный прием будет работать в любой версии Windows — от 95 до «Висты»! Но далеко не все программы по умолчанию содержат в своей таблице импорта ссылку на «GetModuleHandleA». Таким образом, значительная часть программ, будучи зараженной вирусом Win32.Barum.1536, переносчиком инфекции так и не станет. Вирус будет вечно сидеть внутри таких программ и грустно «курить бамбук».





Свежие комментарии