ここでは、Dotfuscator のコマンド ライン インターフェイス(CLI)を使用する方法について説明します。 利用可能なオプションの詳細なリファレンスについては、コマンド ライン リファレンスのページを参照してください。
コマンド ライン インターフェイスは、以下の操作を実行できるように設計されています。
- ビルド サーバーなどにある既存の構成ファイルを使って、Dotfuscator のビルドを実行する
- 構成ファイルを作成しなくてもアプリケーションを保護できる
- 既存の構成ファイルで指定されているオプションをオーバーライドまたは補完する
- 構成ファイルを作成する
コマンド ラインの呼び出し
コマンド ラインの呼び出し方法は、Dotfuscator のインストール方法によって異なります。
-
Dotfuscator を Windows インストーラーを使ってインストールした場合、コマンド ライン インターフェイスは .NET Framework で実行します。 Windows の標準コンソール アプリのように実行できます。
"%DOTFUSCATOR_HOME%\dotfuscator.exe"
Windows インストーラーは
DOTFUSCATOR_HOME
ディレクトリをPATH
上に置くので、次の名前のみで CLI を実行させることができます。dotfuscator
-
NuGet パッケージを使用してインストールする場合、コマンド ライン インターフェイスは .NET 6 以降で実行します。 実行には
dotnet
コマンドを使用します。dotnet {install dir}/tools/programdir/netcore/dotfuscator.dll
または、提供されたスクリプトの 1 つを使用します。
{install dir}/tools/programdir/netcore/dotfuscator
{install dir}
は NuGet パッケージのプロビジョニング時に示したインストール ディレクトリです。
このページではこれ以降の例で、CLI の起動を示すのに dotfuscator
を使用します。
コマンド ラインからのビルド
Dotfuscator コマンド ライン プログラムの主な用途は、既に構成ファイルがある場合に Dotfuscator によるビルドを行うことです。 そのようにするには、構成ファイルのパスを引数として CLI へ提供します。
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="${configdir}/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
として参照されています。
<?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>
例 1:
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" レベルに設定して有効化されています。