Введение

Тип кода, используемого компьютерными вирусами. Метаморфный код – это код, который при запуске выдает логически эквивалентную версию самого себя при определенной интерпретации. Это похоже на квайн, но в отличие от него, исходный код квайна точно соответствует своему выходному коду. Метаморфный код обычно выдает машинный код, а не свой собственный исходный код.

Обзор

Метаморфный код используется компьютерными вирусами для обхода обнаружения по сигнатурам антивирусного программного обеспечения. Метаморфные вирусы часто преобразуют свой собственный двоичный код во временное представление, редактируют это временное представление и затем снова преобразуют отредактированную форму в машинный код. Эта процедура применяется к самому вирусу, в результате чего изменяется и сам метаморфический движок, что означает, что ни одна часть вируса не остаётся неизменной. Это отличается от полиморфного кода, где полиморфный движок не способен переписывать собственный код. Метаморфный код используется некоторыми вирусами непосредственно перед заражением новых файлов, что приводит к тому, что следующее поколение вируса никогда не будет идентично текущему. Мутированный код выполняет ту же функцию (при заданном способе интерпретации), но двоичное представление потомка обычно полностью отличается от представления родителя. Мутация может достигаться с помощью таких методов, как вставка инструкций NOP (методом грубой силы), изменение используемых регистров, изменение потока управления с помощью переходов, замена машинных инструкций на эквивалентные или перестановка независимых инструкций. Метаморфизм не защищает вирус от эвристического анализа. Метаморфный код также может означать, что вирус способен заражать исполняемые файлы из двух или более различных операционных систем (например, Windows и Linux) или даже различных компьютерных архитектур. Часто вирус достигает этого, неся в себе несколько вредоносных программ. Начало вируса кодируется таким образом, чтобы оно преобразовывалось в корректный машинный код для всех целевых платформ. Это в основном используется при удалённой эксплуатации, когда целевая платформа неизвестна.