Skip to Content
新しいバージョン 12 を公開しました 🎉

ターゲットの設定

ターゲットはそれぞれ独自の Babel Obfuscator の設定を持ちます。プロパティパネルでは 1 つのターゲットずつ設定を編集し、セットアップコマンドと保護レベルでは多くの設定を 1 回の操作で変更します。

プロパティパネル

ターゲットを選択してツールバー右上の「プロパティ」ボタンをクリックするか、選択したノードで Enter を押すか、ノードまたは行のメニューで「プロパティ」を選択します。パネルは右側にドッキングされ、タイトルには「ターゲットのプロパティ」とターゲットの名前が表示されます。パネルには「設定」と「XML ルール」の 2 つのタブがあります。

「設定」タブには、選択したターゲットの Babel Obfuscator のオプションがすべて表示され、「マップ ファイル」、「リネーム」、「制御フロー」、「コード暗号化」、「最適化」、「署名と保護」、「ファイルと依存関係」、「Output & diagnostics」、「Advanced」のグループに分かれています。各グループには含まれるオプションの数が表示され、グループは折りたたむことができます。「設定を検索」に入力すると、一覧が絞り込まれます。

キャンバスの横に開いた BubbleBurst.exe のターゲットプロパティパネル。「Settings」タブが選択され、「Find a setting」検索ボックス、「Writes its rename map」にチェックが入った「Map files」グループ、「Flatten Namespaces」、「Unicode Normalization」、「Detect If Obfuscated」のある「Renaming」グループが表示されていますキャンバスの横に開いた BubbleBurst.exe のターゲットプロパティパネル。「Settings」タブが選択され、「Find a setting」検索ボックス、「Writes its rename map」にチェックが入った「Map files」グループ、「Flatten Namespaces」、「Unicode Normalization」、「Detect If Obfuscated」のある「Renaming」グループが表示されていますキャンバスの横に開いた BubbleBurst.exe のターゲットプロパティパネル。「Settings」タブが選択され、「Find a setting」検索ボックス、「Writes its rename map」にチェックが入った「Map files」グループ、「Flatten Namespaces」、「Unicode Normalization」、「Detect If Obfuscated」のある「Renaming」グループが表示されています

選択したターゲットのプロパティパネル

設定には MSBuild タスクのオプション名が使われているため、各設定の働きは Babel タスクリファレンスと各保護機能のページで確認できます。各オプションには、その型に合ったコントロールが用意されています。スイッチにはチェックボックス、アルゴリズムにはリスト、パスにはファイルやフォルダーの選択ダイアログ、フィルターとプロパティマップにはエディターが使われます。リストを「既定」にすると、そのオプションはプロジェクトに書き込まれず、エンジンは独自の既定値を使用します。変更は選択したターゲットだけに適用されます。複数のターゲットをまとめて変更するには、グリッドを使用します。

「Code encryption」グループを表示したプロパティパネル。「String Encryption」が有効、「Msil Encryption」が有効でフィルターは .*、「Dynamic Proxy Call Filters」は ICollection.* に設定され、「Value Encryption」では int32、int64、single、double、array が有効になっています「Code encryption」グループを表示したプロパティパネル。「String Encryption」が有効、「Msil Encryption」が有効でフィルターは .*、「Dynamic Proxy Call Filters」は ICollection.* に設定され、「Value Encryption」では int32、int64、single、double、array が有効になっています「Code encryption」グループを表示したプロパティパネル。「String Encryption」が有効、「Msil Encryption」が有効でフィルターは .*、「Dynamic Proxy Call Filters」は ICollection.* に設定され、「Value Encryption」では int32、int64、single、double、array が有効になっています

コード暗号化の設定:文字列、MSIL、値の暗号化

「Control Flow Obfuscation」のような複合オプションでは、プロパティごとに 1 つのコントロールが表示されます。次の図は制御フローのスイッチを示しています。最後の chain は、Ultimate エディションのチェーン状態アルゴリズムをオンにします。

「ControlFlow」で絞り込んだプロパティパネル。「Control Flow Obfuscation」のマップで enable、goto、switch、case、if、call、value が有効、token と underflow が無効で、chain は既定値のままになっています「ControlFlow」で絞り込んだプロパティパネル。「Control Flow Obfuscation」のマップで enable、goto、switch、case、if、call、value が有効、token と underflow が無効で、chain は既定値のままになっています「ControlFlow」で絞り込んだプロパティパネル。「Control Flow Obfuscation」のマップで enable、goto、switch、case、if、call、value が有効、token と underflow が無効で、chain は既定値のままになっています

「Control Flow Obfuscation」のプロパティ

署名キーやマップファイルのパスワードなどは、現在のセッションの間だけ保持されます。プロジェクトファイルに書き込まれることはないため、再起動後はもう一度入力します。実行中にエンジンがパスワードを必要とした場合は、Babel Desktop が入力を求めます。

マップファイル

「設定」タブの先頭にある「マップ ファイル」グループには、選択したターゲットのマップに関する設定がまとめられています。

  • 「リネーム マップを書き出す」は、ターゲットのマップファイルの書き出しをオンまたはオフにします。その下の行にはマップの書き出し先が表示されます。既定では「難読化されたアセンブリと同じ場所」で、「変更…」で選択した場合はそのファイル名が表示されます。
  • 「ほかのターゲットのマップ」には、このターゲットを終点とするマップリンクが一覧表示されます。ターゲット名をクリックするとそのターゲットが選択され、× をクリックするとリンクが削除されます。
  • 「その他のマップ ファイル」には、このターゲットが読み込むマップのうち、プロジェクト内のどのターゲットも書き出さないものが一覧表示されます。以前のビルドで難読化したライブラリのマップなどです。「マップ ファイルを追加…」で追加し、「削除」で取り除きます。
「Settings」タブを開いた CrossAssembly1App.dll のターゲットプロパティ。「Map files」グループで「Writes its rename map」にチェックが入り、ファイル CrossAssembly1App.dll.map.xml と「Change...」ボタンが表示されています。「Maps from other targets」には削除ボタン付きで CrossAssembly1.dll が表示され、「Other map files」の下に「Add map file...」ボタンがあります「Settings」タブを開いた CrossAssembly1App.dll のターゲットプロパティ。「Map files」グループで「Writes its rename map」にチェックが入り、ファイル CrossAssembly1App.dll.map.xml と「Change...」ボタンが表示されています。「Maps from other targets」には削除ボタン付きで CrossAssembly1.dll が表示され、「Other map files」の下に「Add map file...」ボタンがあります「Settings」タブを開いた CrossAssembly1App.dll のターゲットプロパティ。「Map files」グループで「Writes its rename map」にチェックが入り、ファイル CrossAssembly1App.dll.map.xml と「Change...」ボタンが表示されています。「Maps from other targets」には削除ボタン付きで CrossAssembly1.dll が表示され、「Other map files」の下に「Add map file...」ボタンがあります

ライブラリのマップを読み込むターゲットの「マップ ファイル」グループ

XML ルール

「XML ルール」タブでは、選択したターゲットのインラインの XML 難読化ルールを編集します。エディターは XML を構文強調表示し、「検証」は Babel のルールスキーマに照らして XML を検査して、各エラーの行と列を報告します。「XML を開く」はルールファイルをエディターに読み込み、「XML ファイルを保存」はエディターの内容をファイルに書き出し、「アセンブリに適用」はルールをターゲットに格納します。インラインルールはプロジェクトファイルに保存されます。

ターゲットの「XML rules」タブ。マージされたアセンブリ BubbleBurst.View の Dynamic Proxy Call Filters プロパティを IEnumerator.* に設定するインラインルールと、「Open XML」、「Validate」、「Save XML file」、「Apply to assembly」の各ボタンが表示されていますターゲットの「XML rules」タブ。マージされたアセンブリ BubbleBurst.View の Dynamic Proxy Call Filters プロパティを IEnumerator.* に設定するインラインルールと、「Open XML」、「Validate」、「Save XML file」、「Apply to assembly」の各ボタンが表示されていますターゲットの「XML rules」タブ。マージされたアセンブリ BubbleBurst.View の Dynamic Proxy Call Filters プロパティを IEnumerator.* に設定するインラインルールと、「Open XML」、「Validate」、「Save XML file」、「Apply to assembly」の各ボタンが表示されています

ターゲットのインライン XML ルール

まだ適用していないルールがある間、パネルは同じターゲットにとどまります。別のターゲットを選択したりプロジェクトを実行したりする前に、ルールを適用するか、コマンドパレットの「設定: 未適用の編集を破棄して再読み込み」で破棄してください。プロジェクトの外にあるルールファイルは、グリッドの詳細の「ルール」タブに一覧表示されます。

エンジンプラグイン

Babel Obfuscator のプラグインは、コマンドパレットの「エンジン プラグイン: DLL パスを設定」、またはグリッドの詳細の「プラグイン」タブで、ターゲットごとに設定します。「エンジン プラグイン: 引数名を検出」はプラグインが宣言している引数名を読み取るので、それを基に引数を入力できます。プラグインはエンジン内で実行される .NET コードです。信頼できるプラグインだけを使用してください。

セットアップコマンド

2 つのセットアップコマンドはプロジェクト全体を 1 回の操作で設定し、「難読化: レベルを設定…」は選択したターゲットに保護レベルを適用します。先にアセンブリを追加してから、アプリケーションに合ったコマンドを実行してください。3 つのコマンドはすべてコマンドパレットにあり、2 つのセットアップコマンドはグリッドのツールバーにも「パブリック難読化を設定」と「マージを設定」として表示されます。

「Obfuscation: Set」で絞り込んだコマンドパレット。「Obfuscation: Setup public obfuscation (all assemblies)」、「Obfuscation: Setup merge into main assembly」、「Obfuscation: Set level...」が表示されています「Obfuscation: Set」で絞り込んだコマンドパレット。「Obfuscation: Setup public obfuscation (all assemblies)」、「Obfuscation: Setup merge into main assembly」、「Obfuscation: Set level...」が表示されています「Obfuscation: Set」で絞り込んだコマンドパレット。「Obfuscation: Setup public obfuscation (all assemblies)」、「Obfuscation: Setup merge into main assembly」、「Obfuscation: Set level...」が表示されています

コマンドパレットのセットアップコマンド

コマンド効果
難読化: メイン アセンブリへのマージを設定ほかのすべてのターゲットをメインアセンブリにマージし、プロジェクトの出力ファイルが 1 つになるようにします。メインアセンブリは、プロジェクトで唯一の .exe です。該当するものがない場合や複数ある場合は、最初のターゲットがメインアセンブリになります。エンジンがマージできないアセンブリは、そのまま残されます。
難読化: パブリック難読化を設定 (すべてのアセンブリ)一緒に配布する一連のアセンブリを、パブリックシンボルがリネームされるように準備します。各ターゲットには「obfuscate public」という名前の XML ルールが追加され、リネームマップを書き出すようになります。マージ、埋め込み、参照の依存関係にほかのターゲットを含むターゲットは、マップリンクを通じてそのターゲットのマップを読み込みます。
難読化: レベルを設定…選択したターゲットに、3 段階の保護レベルのいずれかを適用します。

マージとパブリック難読化を設定する 2 つのコマンドは、パッケージターゲット(.apk、.appx、.xap)をスキップします。3 つのコマンドはいずれも、ジョブの実行中や、適用待ちの編集がある間は実行されません。これらのコマンドは開いているプロジェクトを変更しますが、保存はしないので、先にキャンバス、グリッド、プロパティパネルで結果を確認できます。

保護レベル

コマンドパレットの「難読化: レベルを設定…」は選択したターゲットにレベルを適用し、グリッドの行メニューの「難読化レベルを設定」は選択したすべての行にレベルを適用します。各レベルは次のオプションを設定し、それ以外のオプションは変更しません。

レベル保護
軽量型、メソッド、フィールド、プロパティ、イベントのリネーム。制御フロー、暗号化機能、解析対策の保護はオフになります。
バランスリネーム、goto アルゴリズムによる制御フロー難読化、文字列暗号化、ILDASM の抑止。
最大リネーム、goto、switch、case、if、チェーン状態による制御フロー難読化、ストリーム文字列暗号化、値の暗号化、MSIL 暗号化、改ざん検出、デバッグ保護、ILDASM の抑止。ライセンスにストリームアルゴリズムが含まれていない場合は、既定の文字列暗号化が使用されます。

高いレベルの後に低いレベルを適用すると、追加されていた保護は再びオフになります。レベルはあくまで出発点で、後から個々のオプションを変更できます。

「最大」はフィルターなしで MSIL 暗号化をオンにするため、暗号化されるのは XML ルールまたは Obfuscation 属性で選択したメソッドだけです。名前空間や型の単位で暗号化するには、「コード暗号化」グループの「Msil Encryption」にフィルターを追加します。コード暗号化を参照してください。

レベルは、パブリックシンボルのリネーム、マップファイル、マージ、署名には影響しません。これらはアセンブリの配布方法によって決まるもので、そのためにセットアップコマンドが用意されています。

Last updated on