スタンドアロン GUI クイック スタート

このセクションでは Dotfuscator のスタンドアロン GUI の使い方について説明します。Dotfuscator のすべてのユーザー インターフェイスの説明については、「GUI リファレンス」を参照してください。

ステップ 1 – Dotfuscator GUI の起動

  • [スタート] をクリックして [すべてのプログラム] をポイントします。[PreEmptive Solutions] をポイントし、[Dotfuscator Professional Edition 4.0] をポイントし、[Dotfuscator] をクリックします。
  • [Dotfuscator Professional バージョン情報] ダイアログが表示されます。ダイアログをクリックするか任意のキーを押して先へ進むか、もしくは 5 秒待ちます。

ステップ 2 – 既定のプロジェクトの作成

  • [プロジェクトを新規作成] を選択して、[OK] をクリックします。Dotfuscator のメイン ウィンドウが、[入力] タブが選択された状態で表示されます。
  • この画面で、難読化するアセンブリを選択します。
  • [アセンブリを参照または追加します。] をクリックします。
  • 次を参照します。
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\bin\Debug
  • GettingStarted.exe を選択してください。
  • [OK] をクリックします。実行可能ファイルへのパスが、[入力アセンブリ] の下のリスト ボックスに表示されます。
  • [ファイル] メニューの [プロジェクトの保存] をクリックしてプロジェクトを保存します。
  • [名前を付けてプロジェクトを保存] ダイアログで、次の場所に移動します。
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\
  • [ファイル名] フィールドに "Dotfuscator.xml" と入力し、[保存] をクリックします。

ステップ 3 – プロジェクトのビルド

  • [ビルド] タブをクリックします。[出力先ディレクトリ] には、既定で次のように入力されています。${configdir}\Dotfuscated。メモ :${configdir} は Dotfuscator の構成ファイルへのパスが格納された変数です。
  • これで、プロジェクトを難読化する準備ができました。[ビルド] をクリックします。Dotfuscator が、難読化された HelloWorld アプリケーションをビルドするまで、しばらく待ちます。難読化されたアセンブリは次の場所に格納されます。
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\Dotfuscated

以上の手順を実行すると、[出力] タブに移動して難読化されたシンボルを参照したり、Dotfuscator が出力ディレクトリに作成した名前変更の割り当てファイル (map.xml) を確認したりできます。あるいは、難読化されたアプリケーションを実行することも可能です。このように、ほとんど何も構成することなく、アプリケーションを適切に難読化することができました。

次に、Dotfuscator の設定をさらに変更して、より強力な機能を使ってみることにします。

ステップ 4 – プロジェクトの構成

  • [オプション] タブをクリックします。
  • [ビルドの進行状況] プロパティに [詳細な情報を表示する] を設定します。このように設定すると、Dotfuscator の実行中に、進行状況に関する詳しい情報が [ビルド] タブの一番下に表示されます。
  • [デバッグ記号の出力] に [はい] を設定します。このプロパティを設定すると、各出力アセンブリに対して、シンボル ファイルが PDB 形式で作成されます。デバッガにこれらのファイルを使用すると、デバッグ セッションに関する有益な情報を確認することができます。通常は、行番号、ソース ファイル名、ローカル変数名などの情報です。PDB ファイルは出力アセンブリと一緒に出力ディレクトリに置かれます。
  • [名前の変更を無効にする]、[制御フローを無効にする]、[文字列の暗号化を無効にする]、および [除去を無効にする] の値に [いいえ] を設定します。こうすることで、Dotfuscator がアセンブリに適用する変換方法を細かく設定することができます。これらの機能を使用するための構成方法については、以下で説明します。
  • [名前の変更] タブをクリックします。名前変更は、メソッドやフィールドの名前を判読不能な名前に変更することによって、コードを難読化します。この機能は既定値では有効に設定されていますが、名前変更の対象から除外する項目を選択する必要があります。このアプリケーションの場合は、何も除外する必要はありません。
  • [オプション] サブ タブをクリックします。[拡張オーバーロード誘導を使用する] をオンにします。この機能により、名前変更されたメソッド名およびフィールド名の重複性を最大 15% まで高めることができます。(C#、VB などの) ソース言語では戻り値やフィールドの型でオーバーロードすることは通常は許可されないので、逆コンパイルをいっそう困難にします。
  • [出力割り当てファイル] ボックスが、既定値として次のように設定されていることを確認してください。${configdir}\Dotfuscated\Map.xml
  • [HTML として出力] をオンにすると、アプリケーションの名前変更情報と統計情報を含む有益なレポートを入手できます。このレポートは、割り当てファイルと同じディレクトリに出力されます。既定値の出力先は ${configdir}\Dotfuscated\Map.html です。
  • [制御フロー] タブをクリックします。制御フローの難読化は、有効なフォワード (実行可能) ロジックを作り出している分岐処理、条件処理、反復処理などの構成要素 (if、for、while など) を合成し、逆コンパイルが試みられたときに、その意味を判断できないコードを生成します。つまり、コードは難読化前と同様に動作しますが、逆コンパイラによって元のコードを再生成することができなくなります。
  • [文字列の暗号化] タブをクリックします。文字列の暗号化は、アプリケーション内の文字列をスクランブルします。たとえば、登録と検証の処理を迂回しようともくろむ者は、プログラムがユーザーにシリアル番号を要求する文字列を検索することがあります。その文字列を見つけると、その文字列の周辺の命令を探して、ロジックを変更するのです。文字列の暗号化は、検索で文字列が見つからなくすることにより、この作業をより困難にします。
  • 文字列の暗号化は選択されたものを対象とするため、入力アセンブリのすべてのメソッドを含めるためには、左ペインに表示されるアセンブリのチェック ボックス (ツリーのルートに表示) をオンにする必要があります。
  • [除去] タブをクリックします。除去を使用すると、未使用の型、メソッド、およびフィールドが検出、除去されます。このため、処理後のアプリケーションで領域を大幅に節約できる場合があります。
  • 除去を実行するためには、アプリケーションのエントリ ポイントを Dotfuscator に知らせる必要があります。この例の場合、エントリ ポイントは標準の "Main" メソッドです。特に何も構成しなくても、Dotfuscator でこれを判断することが可能です。

ステップ 5 – プロジェクトのリビルド

  • [ビルド] をクリックします。これでプロジェクトを再度難読化することができます。前回と同様に、難読化されたアセンブリが次の場所に格納されます。
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\dotfuscated

ステップ 6 – 出力の確認

  • [出力] タブをクリックします。この画面では、Dotfuscator がコードを難読化した方法を示すツリーの中を移動することができます。
  • ルート ツリーと、すべてのサブ ツリーを展開してください。青い菱形のアイコンは、名前が変更されたメソッドとフィールドを示しています。これらの各アイコンの上位には、元の名前が表示されています。すべてのメソッドとフィールドの名前が変更され、各メソッドの目的を判読するのがほぼ不可能になっていることを確認してください。これにより、コードのリバース エンジニアリング処理への対処として大きな効果を上げることができます。

ms227241.quickstart_output(ja-jp,VS.90).jpg

  • この画面で、Name プロパティの他に、SaySomething と set_Name の 2 つのメソッドがハイライト表示されています。これらの項目は、このアプリケーションで使用されていない項目であることが検出されたため、ハイライト表示されています。Dotfuscator の除去機能を使用して不要なコードを除去することで、アプリケーションのサイズをさらにコンパクトにすることができます。

次のステップ

以上の手順で、GUI を使って難読化を正しく実行することができました。次はコマンド ライン インターフェイス を使用して同じ処理を実行する方法を説明します。その後で、難読化された出力アセンブリを詳しく調べて、難読化の効果を理解する手順を紹介します。

© 2002-2007 PreEmptive Solutions. All rights reserved.