Вирус Win32.Dream.4916А вирус Win32.Dream.4916 — пример так называемой полиморфной технологии. Все тело вируса, размещенное в зараженном файле, представляет собой несколько тысяч команд «PUSH», помещающих в стек «настоящий» исполняемый код вируса. Чтобы создать эффект полиморфности, заполнение стека осуществляется как 16-битовыми, так и 32-битовыми командами «PUSH», и, кроме того, в случайные места вируса вставляются пары команд «PUSH/POP», не изменяющие состояния стека. В конце вирусного тела размещается команда «JMP ESP», передающая управление на вирусный код, — именно поэтому в листинге приводится конец вируса, а не его начало. Теперь о «классическом» полиморфизме — на примере вируса Win32.Parvo. Основная часть тела вируса зашифрована, а расшифровщик состоит из нескольких десятков фрагментов, содержащих как «содержательные» действия, так и «мусор». Примечательно, что «содержательные» действия «размазаны» по разным командам и по разным фрагментам, сами фрагменты перемешаны в случайном порядке, а переход от одного из них к другому выполняется не только командами «JMP» и «CALL», но и «скрытно» — при помощи комбинаций типа «CALL/POP/RET». Применение идеи «пермутации» налицо. Вот маленький «кусочек» одного из вариантов этого расшифровщика. Сумеете ли вы проследить за передачей управления от фрагмента к фрагменту и добраться до «вы —

Нечто подобное делает и вирус Win32.Zperm. a, только на отдельные, переставленные местами фрагменты разбит не расшифровщик, а весь вирус! Впервые подобная идея была использована в DOS — вирусе Ply. Фактически в случае Win32.Zperm. a речь идет не совсем о «полиморфизме», но о «метаморфизме» вируса.

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