Dotfuscator クイック スタート ガイド

Visual Studio 統合 UI チュートリアル

このセクションでは、Visual Studio の中から Dotfuscator を使用して、あなたの最初のアセンブリをすばやく簡単に難読化する方法について説明します。

Visual Studio ソリューションのビルドの一部として難読化を含める方法を示します。Dotfuscator プロジェクトは、他の 1 つ以上の Visual Studio プロジェクト(C#、VB.NET プロジェクトなど)からの入力ファイルを受け入れることもできますが、ファイル システムから直接アセンブリを指定することもできます。

アプリケーションを難読化して保護するために、名前の変更制御フロー不要コードの除去、および文字列の暗号化などの、基本的でありながら強力な機能を使用するプロジェクトを構成する方法を学習します。ここで使用する設定は、ほとんどのユースケースにおいて保護を提供するのに適しています。

Dotfuscator の Visual Studio 統合に関する完全なガイドについては、『Dotfuscator ユーザーズ ガイド』の「Visual Studio 統合 UI の使用」を参照してください。

メモ:このページでは、Dotfuscator に付属している GettingStarted.exe サンプル アセンブリの難読化について説明しています。もちろん、独自のアセンブリで同じ手順に従うこともできます。

ステップ 1 - GettingStarted ソリューションを開く

  • Visual Studio 内で、[ファイル開くプロジェクト/ソリューション]をクリックして、次のファイルを開きます。
    C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.x\samples\cs\GettingStarted\GettingStarted.sln
  • ソリューション ファイルおよびプロジェクト ファイルは、Visual Studio 7.0 形式です。それより新しいバージョンの Visual Studio をお使いの場合は、ファイルをアップグレードしてもよいかどうかを尋ねられます。続行するにはアップグレードに同意する必要があります。

GettingStarted プロジェクトがソリューション エクスプローラーに表示されます。これは C# プロジェクトなので、これを使って GettingStarted 実行可能ファイルをビルドすることができます。

ステップ 2 - アセンブリ用の Dotfuscator プロジェクトの作成

Dotfuscator プロジェクトをソリューションに追加する

  • ファイル]メニューから[追加新しいプロジェクト]を選択します。
  • [新しいプロジェクト]ダイアログの左パネルで、[インストール済み]から Dotfuscator プロジェクトを選択します。
  • Dotfuscator プロジェクト アイコンをクリックします。
  • プロジェクトに GetObfuscated と名前を付けて、[OK]をクリックします。

GetObfuscated という名前の新しい Dotfuscator プロジェクトがソリューション エクスプローラーに表示されます。Dotfuscator プロジェクトを構成するための開始点としてソリューション エクスプローラーを使用します。

難読化するアセンブリを選択する

入力ファイルを指定する場合は、GettingStarted プロジェクトから出力を使用することを Dotfuscator に知らせます。

  • GetObfuscated ノードの最上位レベルで右クリックし、ショートカット メニューから[プロジェクト出力の追加]を選択します。
  • [プロジェクト出力の追加]ダイアログ ボックスで、[プロジェクト]ドロップダウン リストから "GettingStarted" プロジェクトを選択します。
  • [出力グループ]リストから "プライマリ出力" を選択します。[OK]をクリックします。

ソリューション エクスプローラー内の Dotfuscator プロジェクトの入力ノードの下に、GettingStarted の GettingStarted.exe(アクティブ) が表示されます。

ステップ 3 - プロジェクトの構成

これで、プロジェクトをビルドできるようになりました。プロジェクトは既に、ある程度の保護を既定により受けています。

  1. 名前の変更ライブラリ モード
  2. 制御フロー

このセクションの指示によって、保護層に新たな保護層が重ねられます

  1. 文字列の暗号化
  2. 除去/不要コードの除去

このセクションの指示は、名前の変更の強度を高めます

  1. 拡張オーバーロード誘導を有効にする
  2. ライブラリ モードを無効にする

高レベルな機能をオンにする

  • ソリューション エクスプローラーで GetObfuscated プロジェクト ノードを右クリックし、ショートカット メニューから[プロパティ]を選択します。
  • 左側のナビゲーション ツリーで、構成プロパティグローバル オプションを選択します。
  • 機能]セクションで、次の値を "いいえ" に設定します。
    • 文字列の暗号化を無効にする
    • 除去を無効にする

メモ:これらの[<機能>を無効にする]値を "いいえ" に設定すると、実際には機能がオンになります。

構成オプションを調べる

  • ソリューション エクスプローラーで、GetObfuscated ノードの下にある構成オプション フォルダーを展開します。

ここには、構成可能な難読化の設定ごとに 1 つのノードがあります。機能が無効になっている場合は、対応するノードが灰色で表示されます。機能の有効/無効を切り替えるには、ノードを右クリックして、[無効化]メニュー項目のチェックをオンまたはオフにします。あるいは、で説明したように、[グローバル オプション]プロパティ ページを使用して設定できます。

名前の変更を構成する

  • ソリューション エクスプローラーで、構成オプション名前の変更ノードをダブルクリックします。
  • オプション]サブ タブをクリックします。
  • 拡張オーバーロード誘導を使用する]をオンにします。この機能を有効にすると、Dotfuscator は、メソッドの戻り値の型またはフィールドの型を、メソッドまたはフィールドの一意性を判断するときの条件として使用できるようにすることによって、Overload-Induction™(オーバーロード誘導)を拡張します。

文字列の暗号化を構成する

  • ソリューション エクスプローラーで、構成オプション文字列の暗号化ノードをダブルクリックします。
  • 文字列の暗号化は選択されたものを対象とするため、入力アセンブリのすべてのメソッドを含めるためには、左ペインに表示されるアセンブリのチェック ボックス(ツリーのルートに表示)をオンにする必要があります。

ライブラリ モードをオフにする

既定では、Dotfuscator はそのアセンブリの外部からアクセスされる可能性のあるものについては、名前の変更も除去も行いません。しかし、あなたのアセンブリにアクセスするために他のアセンブリを必要としない場合や、ライブラリとライブラリを利用する側を同じ Dotfuscator プロジェクト内で一緒にアセンブルしている場合には、より強力な保護(特に、より広範な名前の変更)を得るために、ライブラリ モードをオフにすることになるでしょう。

  • ソリューション エクスプローラーで、入力GettingStarted の GettingStarted.exe(アクティブ)をクリックします。
  • 入力プロパティで、ライブラリ モードで実行するを "False" に変更します。

ステップ 4 - ソリューションのビルド

  • ソリューション エクスプローラーで GetObfuscated ノードを右クリックし、ショートカット メニューから[プロパティ]を選択します。
  • 左側のナビゲーション ツリーで、構成プロパティビルド設定プロパティを選択します。
  • [出力ディレクトリ]には、既定値として ${configdir}\Dotfuscated が入力されています。必要であれば、この場所を編集することもできます。[OK]をクリックします。

メモ:${configdir} は Dotfuscator の構成ファイルへのパスが格納された変数です。サンプルを既定の場所にインストールした場合、このパスは次のようになります。

C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.x\samples\cs\GetObfuscated\Debug

  • ビルド]メニューから[ソリューションのビルド]を選択します。

最初に C# プロジェクトをビルドし、その後 Dotfuscator プロジェクトをビルドします。Visual Studio の出力ウィンドウに Dotfuscator の出力が表示されます。

ビルドが完了したら、すぐに難読化されたアセンブリをテストしたり使用したりできます

任意:出力の参照

  • ソリューション エクスプローラー内で GetDotfuscated プロジェクトの出力ノードをダブルクリックすると、Dotfuscator の[出力ブラウザー]を表示できます。この画面では、Dotfuscator がコードを難読化した方法を示すツリーの中を移動することができます。
  • ルート ツリーと、すべてのサブ ツリーを展開します。

  • 青い菱形のアイコンは、名前が変更されたメソッドとフィールドを示しています。これらの各アイコンの上位には、元の名前が表示されています。すべてのメソッドとフィールドの名前が変更され、各メソッドの目的を判読するのがほぼ不可能になっていることを確認してください。これにより、コードのリバース&nbsp;エンジニアリング処理への対処として大きな効果を上げることができます。

  • 現在強調表示されている SaySomething メソッドと set_Name メソッドに加えて、Name プロパティにも注目してください。Dotfuscator は、これらの項目がこのアプリケーションで使用されていないと判断しました。Dotfuscator の除去機能によって不要なコードを除去することで、アプリケーションのサイズをさらにコンパクトにすることができます。

任意:よく使われる便利な機能

ソリューション エクスプローラーで GetObfuscated を右クリックして[プロパティ]を選択することにより、プロパティ ページを開きます。

  • 左側のナビゲーション ツリーで、構成プロパティグローバル オプションを選択します。
    • 一般]セクションで、[ビルドの進行状況]プロパティに[詳細な情報を表示する]を設定します。このように設定すると、ビルド中に、進行状況に関する詳しい情報が Visual Studio の出力ウィンドウに表示されるようになります。
    • 高度]セクションで、[デバッグ シンボルの出力]プロパティに[JIT 最適化。PDB のシーケンス ポイント]を設定します(これは[デバッグ]プロジェクト構成の既定値です)。このオプションを設定すると、各出力アセンブリに対して、シンボル ファイルが PDB 形式で作成されます。デバッガーにこれらのファイルを使用すると、デバッグ セッションに関する有益な情報を確認することができます。通常は、行番号、ソース ファイル名、ローカル変数名などの情報です。PDB ファイルは出力アセンブリと一緒に出力ディレクトリに置かれます。
  • 左側のナビゲーション ツリーで、構成プロパティレポート下にある名前の変更を選択します。
    • HTML として出力]チェック ボックスをオンにすると、アプリケーションの名前変更情報と統計情報を含む有益なレポートを入手できます。このレポートは、割り当てファイルと同じディレクトリに出力されます。既定の場所は ${configdir}\Dotfuscated\Map.html です。
  • 左側のナビゲーション ツリーで、構成プロパティレポート下にある除去を選択します。
    • 除去レポート ファイル エディターで、除去レポート ファイルとして ${configdir}\Dotfuscated\removal.xml を指定します。
    • HTML として出力]チェック ボックスをオンにすると、アプリケーションの除去情報と統計情報を含む書式設定されたレポートを入手できます。このレポートは、removal.xml ファイルと同じディレクトリに出力されます。

名前の変更レポートおよび除去レポートを参照する

  • ソリューション エクスプローラーで GetObfuscated ノードを選択します。
  • メニュー バーで[表示]の[Dotfuscator]をクリックします。

このメニュー下にある 2 つのメニュー項目は、表示可能な HTML 形式の名前の変更レポートと除去レポートがあれば有効になります。それらをクリックすると、対応するレポートが既定のブラウザーに表示されます。

詳細情報

これで、Dotfuscator の Visual Studio 統合を使って難読化を行うことができました。コマンド ライン インターフェイスで同じことが行えます。また、難読化された出力アセンブリを詳しく調べ、難読化の効果を理解することができます。

Dotfuscator ユーザー ガイド:

Dotfuscator バージョン 4.28.1.5015. Copyright © 2017 PreEmptive Solutions, LLC