コードモーフィングは、ソフトウェアアプリケーションをリバースエンジニアリング、分析、変更、クラッキングから保護するためにソフトウェアを難読化するために使用されるアプローチです。このテクノロジは、バイナリオブジェクトコードではなく、 Javaおよび.NET言語( Oxygene、C#、Visual Basicなど)からコンパイルされた中間レベルのコードを保護します。コードモーフィングは、保護されたコードをいくつかのプロセッサコマンドまたは小さなコマンドスニペットに分割し、同じ最終結果を維持しながら他のコードに置き換えます。このようにして、プロテクターは中間レベルでコードを難読化します。[1]
コード モーフィングは、数百の固有のコード変換パターンを含むマルチレベル テクノロジです。さらに、このテクノロジは、一部の中間層コマンドを仮想マシンコマンド ( p-codeなど) に変換します。コード モーフィングでは、保護されたコードの実行ロジックを明らかにする可能性があるランタイム トレースから保護することはできません。
他のコード プロテクターとは異なり、この方法ではコード復号化の概念はありません。保護されたコード ブロックは常に実行可能状態にあり、変換されたコードとして実行 (解釈) されます。元の中間コードはある程度存在しませんが、難読化解除によって元のコード フローを明確に把握できます。
コードモーフィングは、 CrusoeやEfficeonなどのTransmetaプロセッサでx86命令セット アーキテクチャを実装するために使用されるジャストインタイム コンパイルテクノロジを指す場合にも使用されます。
コード モーフィングは、コピー保護や、プログラムが有効で正規のインストールか、または不正なコピーかを判断するためのその他のチェックを難読化するためによく使用され、コピー保護コードの削除を通常よりも困難にします。
参照
参考文献
- ^ 「Transmeta Code Morphing™ ソフトウェア: 推測、回復、適応型再変換を使用して現実の課題に対処する」。CGO '03: コード生成と最適化に関する国際シンポジウムの議事録: フィードバック指向とランタイム最適化: 15–24。2003 年 3 月 23 日。ISBN 978-0-7695-1913-5– ACM経由。
