Полиморфные вирусы в WindowsОдним из мифов, активно продвигавшихся в пользовательские массы разработчиками операционной системы Windows 95, был миф о невозможности существования в этой среде самомодифицирующихся программ. В самом деле, исполняемый код PE-программ после загрузки в память попадает в отдельную секцию, для которой сброшен бит разрешения записи. Попытка выполнить модификацию этого фрагмента памяти будет мгновенно пресечена процессором путем генерации исключения 0Dh. Разумеется, закрытый турникет в метро предназначен только для законопослушных «граждан». Остальные же могут обойти его сбоку, предъявив контролерше «красные корочки». Еще турникет можно перепрыгнуть. Наконец, имея подходящую комплекцию, можно просто протиснуться между хромированными прутьями. Для того же, чтобы перебраться через виртуальные «турникеты», устроенные операционной системой Windows, достаточно установить в единицу бит разрешения записи в кодовой секции зараженной программы, — для «дроппера» это можно сделать при помощи утилиты типа «PEWRSEC», а для заражаемых программ это будет делать сам вирус. Вот, например, таблица секций для файла, зараженного вирусом Win32.Rainsong.3891 . Обратите внимание на последнюю секцию, в которой по задумке программистов фирмы Microsoft должны были храниться перемещаемые ссылки, а вовсе не исполняемый код, к тому же доступный для записи! Другой способ преодоления «турникета» заключается в копировании тела вируса в стек, ведь для этого региона программной памяти в операционных системах Windows 9X и Windows NT разрешены как чтение, так и запись, а еще исполнение находящегося там кода.

Ну и на закуску — открытие собственного процесса средствами «OpenProcess» и запись в него при помощи «WriteProcessMemory» Таким образом, запись в кодовые секции программ все-таки возможна. И, значит, самомодифицирующиеся программы в Windows 9X/NT существовать могут. Действительно, они есть, и их много — по крайней мере, несколько сотен. И все они очень разные. Например, вирус Win32.Koru демонстрирует довольно примитивную технику полиморфизма, использующую разбавление собственных команд «мусором».

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