Преобразование кода является подход, используемый в программном обеспечении запутывания для защиты программного обеспечения приложений от обратного проектирования, анализа, модификаций и взлома. Эта технология защищает код промежуточного уровня, например, скомпилированный из языков Java и.NET (Oxygene, C#, Visual Basic и т. Д.), А не двоичный объектный код. Морфинг кода разбивает защищенный код на несколько команд процессора или небольшие фрагменты команд и заменяет их другими, сохраняя при этом тот же конечный результат. Таким образом, средство защиты скрывает код на промежуточном уровне.
Морфинг кода - это многоуровневая технология, содержащая сотни уникальных шаблонов преобразования кода. Кроме того, эта технология преобразует некоторые команды промежуточного уровня в команды виртуальной машины (например, p-code ). Морфинг кода не защищает от трассировки времени выполнения, которая может выявить логику выполнения любого защищенного кода.
В отличие от других средств защиты кода, в этом методе нет концепции дешифрования кода . Блоки защищенного кода всегда находятся в исполняемом состоянии и выполняются (интерпретируются) как преобразованный код. Исходный промежуточный код в определенной степени отсутствует, но деобфускация все же может дать четкое представление о потоке исходного кода.
Морфинг кода также используется для обозначения технологии своевременной компиляции, используемой в процессорах Transmeta, таких как Crusoe и Efficeon для реализации архитектуры набора команд x86.
Морфинг кода часто используется для обфускации защиты от копирования или других проверок, которые программа выполняет, чтобы определить, является ли это действительной, аутентичной установкой или неавторизованной копией, чтобы сделать удаление кода защиты от копирования более трудным, чем в противном случае.