コマンド ライン インターフェイス
ここでは、Dotfuscator のコマンド ライン インターフェイスを使用する方法について説明します。 利用可能なオプションの詳細なリファレンスについては、コマンド ライン リファレンスのページを参照してください。
コマンド ライン インターフェイスは、以下の操作を実行できるように設計されています。
- ビルド サーバーなどにある既存の構成ファイルを使って、Dotfuscator のビルドを実行する
- 構成ファイルを作成しなくてもアプリケーションを保護できる
- 既存の構成ファイルで指定されているオプションをオーバーライドまたは補完する
- 構成ファイルを作成する
コマンド ラインにおける実行可能ファイルの検索
Dotfuscator のコマンド ライン実行可能ファイルは dotfuscator.exe
です。
これはインストール ディレクトリで利用できます。このディレクトリは環境変数 DOTFUSCATOR_HOME
で設定されています。
可能であれば、インストーラーは %DOTFUSCATOR_HOME%
を PATH に追加するので、ほとんどの場合、コマンド ラインで完全修飾することなく dotfuscator
を実行することができます。
DOTFUSCATOR_HOME
環境変数は対応していません。
コマンド ラインからのビルド
Dotfuscator コマンド ライン プログラムの主な用途は、既に構成ファイルがある場合に Dotfuscator によるビルドを行うことです。 これは次のようにとても簡単に行うことができます。
dotfuscator config.xml
コマンド ラインからの構成ファイルの保存
アプリケーションに適したコマンド ライン オプションの設定が確認できたら、/genconfig
オプションを使用して、それらの設定を構成ファイルに保存することができます。
このオプションを使用すると、コマンド ラインで指定したすべてのオプションが(既存の構成テンプレートが存在する場合はそのファイルの設定と結合されて)カスタム構成ファイルとして保存されます。保存された構成ファイルは、それ以後の実行時に単独で使用することができます。
例:
dotfuscator -in:my.dll -keep:namespace -enha:on -cont:high -genconfig:new.xml myconfig.xml
この例で生成される構成ファイル(new.xml
)の内容を見ると、以下のように、コマンド ラインで指定されたオプションが元の構成ファイル(myconfig.xml
)の設定と結合されていることがわかります。
構成ファイル:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.2.dtd">
<dotfuscator version="2.2">
<input>
<asmlist>
<inputassembly>
<option>library</option>
<file dir="." name="my.dll" />
</inputassembly>
</asmlist>
</input>
<output>
<file dir="C:\MSProjects\dotfuscatortest\Dotfuscated" />
</output>
<renaming>
<option>enhancedOI</option>
<option>keepnamespace</option>
<mapping>
<mapoutput overwrite="true">
<file dir="${configdir}\reports" name="MyMap.xml" />
</mapoutput>
</mapping>
</renaming>
<controlflow level="high" />
</dotfuscator>
例
次の例では以下の構成ファイルを使用します。この構成は、出力割り当てファイルを指定して名前の変更を有効にしています。
この構成ファイルは、例の中で myconfig.xml
として参照されています。
例 1:
<?xml version="1.0"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.2.dtd">
<dotfuscator version="2.2">
<renaming>
<mapping>
<mapoutput overwrite="true">
<file dir="${configdir}\reports" name="MyMap.xml"/>
</mapoutput>
</mapping>
</renaming>
</dotfuscator>dotfuscator -in:my.dll myconfig.xml
このコマンドは、my.dll
をライブラリ モードの入力アセンブリとして指定し(拡張子が DLL であるため、既定値としてライブラリ モードになります)、それに対して、構成ファイルで設定されている名前変更オプションを適用します。
この例の場合、制御フローの難読化、文字列の暗号化、および不要コードの除去は構成ファイルで暗黙的に無効化されているので、これらの処理は実行されません。
出力ディレクトリは構成ファイルとコマンド ラインのいずれでも指定されていないため、出力 DLL は ".\Dotfuscated" ディレクトリに格納されます。
例 2:
dotfuscator -in:my.dll -keep:namespace -enha:on -cont:high myconfig.xml
また、このコマンドは my.dll
を入力アセンブリとして指定しています。
さらに、このコマンドでは、名前の変更処理において名前空間を保持し、拡張オーバーロード誘導を使用するように指示しています。
また制御フローの難読化も、最大限の難読化を行う "high" レベルに設定して有効化されています。