Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Тип кода, используемого компьютерными вирусами. Метаморфный код – это код, который при запуске выдает логически эквивалентную версию самого себя при определенной интерпретации. Это похоже на квайн, но в отличие от него, исходный код квайна точно соответствует своему выходному коду. Метаморфный код обычно выдает машинный код, а не свой собственный исходный код.
Type of code used by computer virusesMetamorphic code is code that when run outputs a logically equivalent version of its own code under some interpretation. This is similar to a quine, except that a quine's source code is exactly equivalent to its own output. Metamorphic code also usually outputs machine code and not its own source code.
Обзор
Метаморфный код используется компьютерными вирусами для обхода обнаружения по сигнатурам антивирусного программного обеспечения. Метаморфные вирусы часто преобразуют свой собственный двоичный код во временное представление, редактируют это временное представление и затем снова преобразуют отредактированную форму в машинный код. Эта процедура применяется к самому вирусу, в результате чего изменяется и сам метаморфический движок, что означает, что ни одна часть вируса не остаётся неизменной. Это отличается от полиморфного кода, где полиморфный движок не способен переписывать собственный код. Метаморфный код используется некоторыми вирусами непосредственно перед заражением новых файлов, что приводит к тому, что следующее поколение вируса никогда не будет идентично текущему. Мутированный код выполняет ту же функцию (при заданном способе интерпретации), но двоичное представление потомка обычно полностью отличается от представления родителя. Мутация может достигаться с помощью таких методов, как вставка инструкций NOP (методом грубой силы), изменение используемых регистров, изменение потока управления с помощью переходов, замена машинных инструкций на эквивалентные или перестановка независимых инструкций. Метаморфизм не защищает вирус от эвристического анализа. Метаморфный код также может означать, что вирус способен заражать исполняемые файлы из двух или более различных операционных систем (например, Windows и Linux) или даже различных компьютерных архитектур. Часто вирус достигает этого, неся в себе несколько вредоносных программ. Начало вируса кодируется таким образом, чтобы оно преобразовывалось в корректный машинный код для всех целевых платформ. Это в основном используется при удалённой эксплуатации, когда целевая платформа неизвестна.
Metamorphic code is used by computer viruses to avoid the pattern recognition of anti virus software. Metamorphic viruses often translate their own binary code into a temporary representation, editing the temporary representation of themselves and then translate the edited form back to machine code again. This procedure is done with the virus itself, and thus also the metamorphic engine itself undergoes changes, which means that no part of the virus stays the same. This differs from polymorphic code, where the polymorphic engine can not rewrite its own code. Metamorphic code is used by some viruses when they are about to infect new files, and the result is that the next generation will never look like current generation. The mutated code will do exactly the same thing (under the interpretation used), but the child's binary representation will typically be completely different from the parent's. Mutation can be achieved using techniques like inserting NOP instructions (brute force), changing what registers to use, changing flow control with jumps, changing machine instructions to equivalent ones or reordering independent instructions. Metamorphism does not protect a virus against heuristic analysis. Metamorphic code can also mean that a virus is capable of infecting executables from two or more different operating systems (such as Windows and Linux) or even different computer architectures. Often, the virus does this by carrying several viruses within itself. The beginning of the virus is then coded so that it translates to correct machine code for all of the platforms that it is supposed to execute in. This is used primarily in remote exploit injection code where the target platform is unknown.