Babel Obfuscator のプラグイン
Babel Obfuscator はカスタムプラグインをサポートしており、難読化ツールの機能を、標準で用意されている範囲を超えて拡張できます。カスタムプラグインでは、次のことができます。
- 独自の文字列暗号化と値の暗号化のアルゴリズムを作成する
- 型、メソッド、プロパティ、イベント、フィールドなどのシンボルをリネームする
- カスタムコードをアセンブリにマージする
- アセンブリのメタデータを照会して難読化ルールを定義する
- アセンブリのコードを変更する
- そのほか多数
カスタムプラグインは .NET Framework を使って開発でき、プラグイン管理インターフェイスを通じて Babel に統合できます。
コードサンプル
GitHub では、いくつかの Babel プラグインをソースコード付きで入手できます。カスタムプラグインを実装する場合は、これらのサンプルプラグインを出発点として参考にできます。すべてのプラグインプロジェクトを含むソリューションをダウンロードするには、次の git コマンドを使用します。
git clone https://github.com/babelfornet/BabelPlugins.gitこれにより、コードを調べ、必要に応じてプラグインを変更できます。
コマンドラインでのプラグインの使用
Babel は、コマンドラインでプラグインファイルのリストを受け取れます。babel.exe のコマンドラインで 1 つ以上のプラグインファイルを指定するには、--plugin スイッチの後にプラグインファイルの完全パスを指定します。
babel MyApp.exe --plugin CustomPlugin1.dll --plugin CustomPlugin2.dllプラグインには、コマンドラインスイッチ --argument を使って引数を渡せます。
babel MyTarget.exe --plugin CustomPlugin1.dll --plugin CustomPlugin2.dll
--argument arg1=value1 --argument arg2=value2引数は、キーと値のペアとして定義します。複数の引数を指定するには、--argument スイッチを複数回使用します。
MSBuild の Babel タスクでのプラグインの使用
MSBuild の Babel タスクを使用している場合は、次のように Babel タスクに Plugins 属性を追加して、プラグインのリストを指定できます。
<ItemGroup>
<BabelPlugin Include="DesEncrypt.dll"/>
<BabelPlugin Include="LicenseInjector.dll"/>
</ItemGroup>
<Babel
Plugins="@(BabelPlugin)"
PluginsArguments="arg1=value1;arg2=value2" />Babel タスクの PluginsArguments プロパティでは、すべてのプラグインに対するプラグイン引数を指定できます。プラグイン引数のリストは、セミコロンで区切ったキーと値のペアの並びで表します。
Babel Desktop でのプラグインの使用
Babel Desktop でターゲットアセンブリにプラグインを使用するには、次の手順に従います。
- プロジェクトのキャンバスでターゲットアセンブリを選択します。
- プロパティパネルの「ファイルと依存関係」グループで、プラグインの DLL を
Pluginsに追加します。コマンドパレットの「エンジン プラグイン: DLL パスを設定」を使うと、同じオプションに移動できます。 - コマンドパレットから「エンジン プラグイン: 引数名を検出」を実行して、プラグインが受け取る引数を一覧表示し、その値を
PluginsArgumentsに入力します。
プラグインは、お使いのアカウントの権限で難読化エンジンの内部で実行されます。信頼できるプラグイン DLL だけを読み込んでください。