ここでは、Dotfuscator 構成エディターを使用する方法について説明します。 これは、Dotfuscator の構成ファイルを編集するために使用できる Windows ユーザー インターフェイス アプリケーションです。
構成エディターの起動
構成エディターを起動するには、Windows スタート メニューからアクセスするショートカット [Dotfuscator Pro Config Editor]を使用します。
この代わりに、実行可能ファイルを直接実行することもできます。 Dotfuscator の構成エディター実行可能ファイルの名前は dotfuscatorUI.exe
です。 これはインストール ディレクトリで利用できます。このディレクトリは環境変数 DOTFUSCATOR_HOME
で設定されています。 可能であれば、インストーラーは %DOTFUSCATOR_HOME%
を PATH に追加するので、ほとんどの場合、コマンド ラインで完全修飾することなく dotfuscatorUI
を実行することができます。
メイン ウィンドウ
Dotfuscator のメイン ウィンドウは縦に配置された 4 つの操作領域で構成されています。
- ウィンドウの上部には、見慣れた Windows メニュー バー
- メニュー バーの下部には、頻繁に使用する操作のツール バーが表示
- ツール バーの下には、構成の設定項目やコマンドを実行するためのインターフェイスがタブごとに分類されて表示
- ウィンドウの最下部には、出力を見るためのタブ付きのスクロール可能なコントロール ペインが表示
構成の作成
新しい構成を作成するには、次の 3 つの操作を実行する必要があります。
1: 入力の選択
[入力]タブでは、ツール バーを使用して入力パッケージや入力アセンブリを追加できます。 [入力の追加]ダイアログ ボックスで、パッケージやアセンブリのディレクトリとファイル名を入力したり、ディレクトリとファイル マスクを入力したり、あるいは、ファイル システムを参照して入力またはフォルダーを指定することができます。
2: 出力先ディレクトリの指定
新しい構成を作成した場合、出力先ディレクトリの既定値として ${configdir}\Dotfuscated
が設定されます。 ${configdir}
は組み込みプロパティの 1 つで、構成ファイルの保存先のフォルダーに展開されます。
また、もう 1 つの方法として、ファイル システムを参照して適切な出力ディレクトリを選択することもできます。
3. 構成ファイルの保存
Dotfuscator で構成ファイルをビルドするには、そのファイルをディスクに保存しておく必要があります。 保存するには、ツール バーにある[保存]アイコンをクリックするか、または[ファイル]メニューの[上書き保存](Ctrl+S)を選択します。 構成ファイルを新規作成し初めて保存するときは、ディスク上の保存先の入力を求められます。
既に保存されている構成ファイルを開くには、ツール バーにある[開く]アイコンをクリックするか、または[ファイル]メニューの[開く](Ctrl+O)を選択します。
構成エディターのタイトル バーには、現在開いてる構成ファイルのパスが表示されます。 このパスの後ろにアスタリスク(*
)が表示されている場合は、変更が保存されていなことを示します。
入力の設定
アセンブリの追加
構成のパッケージおよびアセンブリの組み合わせを指定するには、[入力]タブを使用します。 このタブでは、ツール バーの[新しい入力を追加します]ボタンを使用して新しいパッケージまたはアセンブリを構成に追加できます。 このボタンをクリックすると[入力の追加]ダイアログ ボックスが表示されます。このダイアログ ボックスでは、パッケージまたはアセンブリのディレクトリとファイル名を入力するか、またはファイル システムを検索して追加対象を指定できます。
[参照]ダイアログ ボックスを使用すると、追加したいパッケージやアセンブリを複数選択することにより、複数の入力を 1 回の操作で追加できます。
また、[入力アセンブリ]リストにパッケージやアセンブリをドラッグ アンド ドロップすることもできます。
入力の編集と削除
構成の入力を変更するには[選択した入力を編集します]ボタンを使用し、構成から入力を削除するには[選択した入力をリストから削除します]ボタンを使用します。 これらの操作を実行するには、一覧で操作対象の入力を選択し、ツール バーの適切なボタンをクリックします。 入力の削除は、削除対象の入力を選択して Delete キーを押す方法でも実行できます。
入力パスを編集する場合、入力するテキストにプロパティを埋め込むことができます。 たとえば、次のように記述します。
プロパティ:
c:\${inputdir}\myapplication.exe
プロパティの置き換えは、プロパティ リストとプロパティで説明している優先規則に基づいて実行されます。 プロパティが埋め込まれている項目にカーソルを移動させると、置換されて実際に使用される値を完全な形で参照できます。
入力プロパティ
パッケージは固有のオプションを持つことができます。 選択したパッケージに使用できるオプションがある場合は、ツール バーの[入力プロパティ]ボタンがアクティブになります。
ライブラリ モード
ツール バーの[すべてのアセンブリをライブラリ モードで実行します]ボタンを使用すると、すべてのアセンブリを対象として、ライブラリ モードの有効と無効を切り替えることができます。
もう 1 つの方法として、リスト内の入力アセンブリ下に表示される[ライブラリ モードで実行する]チェック ボックスのオン/オフを切り替えることで、個々のアセンブリのライブラリ モードを選択することもできます。
XAML の変換モード
ツール バーの[XAML の変換]ボタンを使用すると、すべてのアセンブリを対象として、XAML の変換モードの有効と無効を切り替えることができます。
もう 1 つの方法として、リスト内の入力アセンブリ下に表示される[XAML の変換]チェック ボックスのオン/オフを切り替えることで、個々のアセンブリに対する XAML の変換モードを設定することもできます。
パッケージ アセンブリを処理から除外する/処理に含める
パッケージ内のアセンブリ ノードを右クリックして[パッケージからアセンブリを除外する]を選択すると、パッケージに含まれる特定のアセンブリを Dotfuscator のラウンド トリップから除外することができます。 これにより、Dotfuscator で処理されないパッケージ成果物のリストにアセンブリが追加されます。 成果物リストに追加することで、アセンブリはあらゆる Dotfuscator 保護機能を免除され、既存の厳密名および署名が保持されます。 この設定は、もう一度右クリックして[パッケージにアセンブリを含める]を選択することにより切り替えることができます。
宣言による難読化
[難読化属性の使用]および[難読化属性の除去]は、宣言による難読化に関連する設定です。 すべての入力アセンブリを対象に、これらの設定はツール バーの対応する各ボタンで有効と無効を切り替えることができます。
もう 1 つの方法として、入力アセンブリ下に表示されるリスト内で、これらの設定に対応するチェック ボックスのオン/オフを切り替えることで、個々のアセンブリの設定を構成することもできます。
チェック属性
[チェック属性の使用]および[チェック属性の除去]というアセンブリレベルのチェック設定は、入力アセンブリ下のリスト内に表示される、これらの設定に対応するチェック ボックスのオン/オフを切り替えることで、個々のアセンブリの設定を構成することができます。
ディレクトリ入力
Dotfuscator には、Directory パッケージの入力を介して、1 つのディレクトリ内のすべてのファイルを保護する機能が用意されています。 Directory パッケージはディレクトリへの相対パスまたは絶対パスで構成され、任意で、一致させるファイルのワイルドカード指定子(ファイル マスク)を含みます。 ファイル マスクに一致するすべてのマネージ アセンブリが Dotfuscator への入力として使用されます。 アンマネージ アセンブリやその他のファイル マスクに一致しないファイルは、パッケージの成果物として列挙されますが、Dotfuscator では処理されず、ビルド処理中に出力ディレクトリへコピーされます。
Directory パッケージを追加するには、[入力の追加]を選択して、[入力の追加]ダイアログ ボックスでパスとファイル マスク ワイルドカードを入力します。 [参照]ボタンを選択し、目的のディレクトリへ移動して、ファイル名の入力欄を "フォルダーの選択" テキストのままにしておくと、ディレクトリ全体のファイル(*.*)を追加することもできます。 明示的なパスを指定したり、プロパティを使用して、パスの一部または全部を置き換えるプロパティを指定したりできます。
すべての設定は、Directory パッケージのすべての入力アセンブリに適用されます。また、パッケージ アセンブリの一覧に含まれるアセンブリに対し、対象除外規則を作成して Dotfuscator の構成に保存できます。
[設定]タブ
[設定]タブでは、[オプション]、[プロパティ]、[ビルド設定]、[ビルド イベント]、[署名]、[レポート]、[機能割り当て文字列](宣言による難読化用)、および[ユーザー定義のアセンブリ ロード パス]を設定できます。 設定を行う対象の機能を選択するには、タブの左側に表示されるナビゲーション ペインで目的のノードを選択します。
オプション
[オプション]エディターを使用すると、構成のオプションを設定できます。
このタブでは、Dotfuscator の名前変更などの各機能を選択的に有効化または無効化することもできます。 また、次のオプションを変更することもできます。
-
デバック シンボルの出力:Dotfuscator が、保護されたアセンブリ用に更新されたデバッグ シンボル (PDB ファイルなど)を作成する方法を制御します。以下のような設定があります。
- 自動的に入力アセンブリに基づく:出力アセンブリごとに、入力アセンブリのデバッグ シンボルの形式に一致するデバッグ シンボルを作成します。
- なし:入力アセンブリにデバッグ シンボルがある場合でも、出力にはデバッグ シンボルが含まれません。
- 難読化属性の継承:このオプションは、型とメソッドに適用する宣言による難読化属性を、派生する型とオーバーライドするメソッドにも適用するかどうかを指定します。
- スマート難読化:このオプションでは、名前の変更および除外について、選択したアプリケーションの種類における対象除外を自動的に適用するかどうか(有効または無効)を指定できます。 詳細については、スマート難読化を参照してください。 既定値では有効になっています。
-
Ildasm を抑制する:これはすべての出力アセンブリへ
SuppressIldasmAttribute
を追加するよう Dotfuscator に指示します。これにより、Microsoft の ILdasm ユーティリティがアセンブリの IL を表示しないようになります。 この属性は、"Navigate to Decompiled Sources"(逆コンパイルされたソースへの移動)機能を使用して、Visual Studio がソース コードを逆コンパイルできないようにします。 これは .NET 2.0 以上を対象とするアセンブリにのみ有効です。 - [機能]を無効にする:Dotfuscator では各変換処理を個別に有効または無効に設定できます。 新しい構成の既定値で無効になっている変換処理には、リンク、ウォーターマーク、除去、および文字列の暗号化があります。 新しい構成の既定値で有効になっている変換処理には、名前の変更、制御フロー、およびチェックがあります。
- ビルドの進行状況:このオプションは、ビルドの過程で Dotfuscator が出力する情報の詳細度を制御します。
- 調査のみを実行:このオプションは、Dotfuscator に対して、レポートのみを生成してアセンブリの出力を行わないように指示します。
- Mono 互換の変換のみを使用する:この設定は、以前に Mono ランタイム下で実行時エラーを引き起こすことが判明したため変換を無効にします。 このオプションをオンにすると、逆コンパイラからの保護を削減しますが、Microsoft .NET 以外のプラットフォームでアプリケーションの実行を保証するのに役立つことがあります。 既定値では無効になっています。
プロパティ
[プロパティ]エディターでは、ユーザー定義の名前と値のペアを構成プロパティとして参照および追加することと、コマンド ラインで指定された外部プロパティを参照することが可能です。 詳細については、プロパティ リストとプロパティを参照してください。 構成プロパティを追加するには、構成プロパティ ツール バーの[新規のプロパティを作成します]ボタンをクリックします。
[新しい構成プロパティ]ダイアログが表示されます。 名前と値を該当するボックスに入力してください。 [OK]をクリックすると、指定したプロパティが設定されます。
ツール バーの[選択したプロパティを編集します]ボタンおよび[選択したプロパティを削除します]ボタンを使用すると、同様の操作方法で構成プロパティを変更または削除できます。
ビルド設定
[ビルド設定]エディターでは、構成の出力先ディレクトリ(と、任意で一時ディレクトリ)を指定できます。
新しい構成を作成した場合、出力先ディレクトリの既定値として ${configdir}\Dotfuscated
が設定されます。 ${configdir}
は組み込みプロパティの 1 つで、構成ファイルの含まれるフォルダーに展開されます。
別の出力先ディレクトリを選択したい場合や一時ディレクトリを指定する場合は、適切なテキスト フィールドにそのディレクトリのパスを入力します。
[一時ディレクトリ]の指定は任意です。処理中に一時ファイルを格納するために使用されます。 既定では、Dotfuscator は Windows の一時ディレクトリを使用します。 このディレクトリを指定したい場合は、このフィールドにディレクトリのパスを入力するか、[参照]をクリックしてグラフィカルに場所を選択します。
[出力先ディレクトリ]は、ビルドからの出力が保存される場所であるため必須です。 このフィールドにディレクトリのパスを入力するか、[参照]をクリックしてグラフィカルに場所を選択します。
dotnet build
、または MSBuild を使用するなど)通常どおりビルドしていれば、保護されたアセンブリはプロジェクトの出力ディレクトリ(bin/Release
など)で見えるようになります。ビルド イベント
[ビルド イベント]プロパティ ページでは、Dotfuscator 構成のビルド イベントを指定できます。
各イベントでは、そのイベントの発生時に実行する外部プログラムを指定できます。 そのプログラムの作業ディレクトリおよびコマンド ライン オプションを指定することも可能です。また、指定プログラムが失敗した場合、Dotfuscator のビルドを中止(失敗)するかどうかを指定することもできます。
ビルド後のイベントでは、どの状態の場合にプログラムを実行するか(例:常時、ビルド成功時のみ、ビルド失敗時のみ)を指定できます。 さらに、ビルド後のイベントをビルドに対して 1 回だけ実行するか、出力モジュールごとに 1 回ずつ実行するかを指定できます。
厳密な名前
[署名]エディターでは、厳密名のアセンブリの署名および再署名を自動的に行うよう Dotfuscator を構成することができます。 詳細については、厳密名のアセンブリの難読化を参照してください。
厳密名が付けられたアセンブリはデジタル署名されています。 これにより、署名後にアセンブリが変更されていないかどうかを実行時に確認できます。 署名には SHA1 ハッシュが使用され、ハッシュは RSA 公開/秘密キー ペアの秘密キーで署名されています。 署名と公開キーは、共にアセンブリのメタデータに埋め込まれています。
Dotfuscator はアセンブリを変更してしまうため、Dotfuscator を使ってアセンブリを処理した後に署名を行うことは不可欠です。
Dotfuscator では、このステップを難読化処理の一環として扱います。
レポート
Dotfuscator は実行時、保護されたアセンブリに加え、レポート ファイルも出力します。 このレポート ファイルでは Dotfuscator がアセンブリをどのように保護したのかを説明しています。
これらのレポート ファイルはアプリケーションのリリースごと(またはビルドごと)にアーカイブすることをお勧めします。アーカイブしておけば、それを後で利用することができます。 たとえば、名前の変更レポートを使用すれば、保護されたアプリケーションを使用している顧客から受け取ることができる、 難読化されたスタック トレースをデコードできます。
名前の変更レポート
名前の変更レポートは、統計セクションを含むある特定の実行中に Dotfuscator によって名前が変更されたすべての要素の概要を提供します。 [出力割り当てファイル]セクションでは、名前の変更割り当てファイルを保存する場所を指定できます。
また、既存の出力ファイルをバックアップすることなく、アプリケーションをビルドするたびにその出力ファイルを上書きするオプションもあります。
Dotfuscator には、既定の .XML 形式のほかに、可読性の高い HTML 形式のレポートも生成できる、既定の変換処理があります。 [HTML 形式で保存する]ボックスをオンにすると、[カスタム スタイルシートを使用する]フィールドが有効になります。 カスタム変換に既定値を使用する場合は空白のままにし、そうしない場合は[参照...]ボタンをクリックして場所を選択します。
除去レポート
除去レポートは、統計セクションを含むある特定の実行中に Dotfuscator によって除去されたすべての要素の概要を提供します。 [除去レポート ファイル]セクションでは、レポートを保存する場所を指定できます。
また、既存の出力ファイルをバックアップすることなく、アプリケーションをビルドするたびにその出力ファイルを上書きするオプションもあります。 除去レポートは、XML 形式のファイルのほかに可読性の高い HTML 形式のドキュメントとしても出力できます。 このレポートは迅速な相互参照を提供しており、削除されたすべての型、フィールドおよびメソッドを即座に確認できるよう、項目間をすばやく移動できます。 [HTML 形式で保存する]チェック ボックスをオンにすることにより、このレポートを XML 形式のレポートと同じ名前およびパス情報を使用して書き出すように指示できます。 既定の HTML 形式レポートが要求するレポート条件を満たしていない場合は、独自の XSL ドキュメントを提供することができます。Dotfuscator はそのドキュメントを使用して、XML 形式レポートの変換を行います。 [HTML 形式で保存する]ボックスをオンにすると、[カスタム スタイルシートを使用する]フィールドが有効になります。 カスタム変換に既定値を使用する場合は空白のままにし、そうしない場合は[参照...]ボタンをクリックして場所を選択します。
スマート難読化レポート
スマート難読化レポートは、スマート難読化機能が指定する規則に基づいて名前の変更または除去ができなかったすべての要素の概要を提供します。 スマート難読化によって項目が除外されたがレポートの出力先が指定されていない場合、レポートは[スマート難読化レポート]タブで Dotfuscator ウィンドウの下部にある[ビルド出力]タブの隣に表示されます。 [スマート難読化レポート ファイル]フィールドでは、レポートを保存する場所を指定できます。
既存の出力ファイルをバックアップすることなく、アプリケーションをビルドするたびにその出力ファイルを上書きするオプションもあります。 また、任意でレポートの詳細を構成できます。 レポートの詳細属性に使用できる値は、[すべて]、[警告のみ]および[なし]です。 既定値は[すべて]です。
機能割り当て文字列
[機能割り当て文字列]エディターは、Dotfuscator でサポートする各機能に対し、任意の文字列を割り当てるために使用できます。この文字列は、ObfuscationAttribute
の Feature プロパティ値として使用されます。
ツール バーから、機能割り当て文字列の追加、編集、および削除を行えます。 追加ボタンをクリックすると、サポートされている Dotfuscator 機能に対して機能文字列を割り当てることができるダイアログが表示されます。
ユーザーは任意の文字列を[割り当て文字列]フィールドに入力できます。 選択された機能は、その割り当て文字列で修飾された ObfuscationAttribute
が作成されることを意味します。
(追加した)機能割り当て文字列を選択すると、編集ボタンと削除ボタンがアクティブになります。 編集ボタンをクリックすると、サポートされている Dotfuscator 機能に対して割り当てている機能文字列を編集することができるダイアログが表示されます。
ユーザー定義のアセンブリ ロード パス
このエディターを使用すると、構成でユーザーが定義したアセンブリ ロード パスを編集することができます。 ツール バーから、ディレクトリの追加と削除、既存ディレクトリの編集、ディレクトリを検索する順序の変更が行えます。 [アセンブリ ロード パスを追加します]ボタンをクリックすると、このウィンドウが表示されます。
パスを指定したら[OK]をクリックします。 このパスが[ユーザー定義アセンブリ ロード パス]ウィンドウに表示されます。
[最初に検索]チェック ボックスをオンにすると、Dotfuscator はその標準検索を適用する前にロード パスを検索します。 チェックをオフにすると、Dotfuscator はその標準検索を適用した後にのみロード パスを検索します。
各機能の設定の構成
構成エディターでは、各機能の設定を個別に構成することができます。 このユーザー インターフェイスには、各機能用に個別のタブが表示されます。各機能の詳細については、以下のトピックを参照してください。
ビルド
構成エディターから Dotfuscator のビルドを開始するには、ツールバーの[ビルド]アイコンをクリックするか、[ビルド]メニューから[ビルド](Ctrl+B)を選択します。 ビルドは、構成エディターで現在読み込まれている構成ファイルを使用しますが、未保存の変更がある場合はビルドを実行する前に保存します。
ビルド中およびビルド後には、Dotfuscator の出力がコンソール画面に表示されます。
ビルドを実行中にキャンセルするには、ツールバーの[キャンセル]アイコンをクリックするか、[ビルド]メニューの[ビルドのキャンセル]( Ctrl+Shift+B)を選択します。
[出力]タブ
アプリケーションの難読化が完了したら、その結果を[出力]タブで確認できます。
このタブでは、ツリー ビューを参照して、Dotfuscator による型、メソッド、およびフィールドの名前変更の結果を閲覧できます。 変更後の新しい名前は、ツリー内で元のノードの後に表示されます。
出力ディレクトリを開くには、ツールバーの[出力ディレクトリを開く]ボタンをクリックするか、[ビルド]メニューの[出力ディレクトリを開く](Ctrl+E)を選択します。
ユーザー設定
[ツール]メニューの[ユーザー設定]からアクセスするダイアログの[ニュースとアップデート]セクションでは、Dotfuscator が更新を定期的に確認できるようにするオプションがあります。 このダイアログにはプライバシー ポリシーを表示するリンクも含まれています。
カスタマー フィードバック プログラムのダイアログを開くリンクもあります。 このリンク内のテキストは、現在の選択/非選択状態を示します。 プライバシーについて知りたい場合は、プライバシー ポリシーを表示しますリンクをクリックします。
コマンド ラインから構成エディターを開く
コマンド ラインで次のように dotfuscatorUI.exe を実行することにより、外部プロパティや特定の構成ファイルを指定して構成エディターを起動できます。
dotfuscatorUI.exe -p=outdir=c:\temp config_template.xml