概要
Dotfuscator は、逆コンパイラがソース コードを再作成するのに使用するコード パターンを変更することによって難読化を行います。 Dotfuscator は、逆コンパイラを混乱させ、中断させるために、偽(にせ)の条件文やその他の紛らわしい構成体を追加します。 この処理は、有効なフォワード(実行可能)ロジックを作り出している分岐処理、条件処理、反復処理などの構成要素を合成し、逆コンパイルが試みられたときに、その意味を判断できないコードを生成します。
一方 Dotfuscator は、コード構造を追加するだけでなく、逆コンパイラがソース コードを再作成するのに使用するコード パターンを破壊することによって難読化を行います。 結果として生成されるコードは、意味的にはオリジナルのコードと等価ですが、オリジナルのコードがどのように記述されていたかを示す手掛かりは含まれません。
この機能の目的は、MSIL を自動で逆コンパイルして高レベルなソースに戻されることを防止することです。 エンド ユーザーは、その後も MSIL 自体を表示することはできますが、それを完全に理解することや、機能面での大きな変更を行うことは困難になります。
例:
処理前 | 処理後(名前の変更あり) |
---|---|
![]() |
![]() |
制限事項
制御フローの難読化後にアプリケーションのパフォーマンスをテストすることが重要です。特に、何度も実行されるコード(ゲーム ループ、計算/アルゴリズム集約型メソッドなど)をテストしてください。
制御フローの難読化は、メソッドに十分に多くの基本ブロックが含まれている場合にのみ、効果的に逆コンパイルを妨害できます。要件の中でも特にこれが必要です。
また、入力 IL に基づく決定性が完全ではないため、IL の内容が同じ 2 つのメソッドを処理した場合、難読化後の IL リストが異なる結果(ただし、機能的には同等)になる可能性があります。
対象除外
制御フローの対象除外は、特定の対象除外とカスタム規則のどちらも、名前変更の対象除外と同じ方法で行います。 ただし、制御フローの対象除外はメソッドにのみ適用できます。 テスト中にパフォーマンスの低下を認めた場合は、計算集約型タスクが行われるあらゆるメソッドとクラスに対象除外を適用してください(基本的には、パフォーマンスを制限する要因が CPU である状況です)。
オプション
"高" は、自動逆コンパイルを妨害するために設計された唯一のレベルです。 "高" では、対象除外を使用しても解決できないパフォーマンスの低下が生じる場合、あるいは、制御フローが実行時エラーの原因であると考えられる場合のデバッグ目的として、"中" または "低" を使用することができます。