Skip to Content
新しいバージョン 12 を公開しました 🎉
ObfuscatorMSBuild タスクBabel タスクリファレンス

Babel タスクリファレンス

Babel の MSBuild タスクのすべての属性を機能別にまとめ、各属性に対応するコマンドラインオプションを示します。

Babel タスクは、コマンドラインツールのオプションごとに属性を 1 つ公開し、属性の値をそのままツールに渡します。Boolean の属性は true または false を受け付けます。コマンドラインオプションが引数を取る場合は、同じ引数を属性の値として渡せるため、「Boolean / String」と示された属性はどちらの形式も受け付けます。リスト属性は、; で区切った複数の値を取ります。設定されていない属性には、表に記載した既定値が使われます。

Babel Obfuscator の NuGet パッケージを使用する場合、各属性は MSBuild のプロパティまたは項目で設定します。パッケージリファレンスのプロパティの対応の表を参照してください。

バージョン 12.0 では、改ざん検出のモバイル向けのパッケージの整合性チェックを制御する SingleFile、TrustedSigner、TrustedBundle、TrustedTeam 属性と、StringEncryption の stream 値が追加されました。次の表では 12.0 と示しています。

その他

属性型既定値コマンドライン説明
BabelDirectory文字列babel.exe を含むフォルダーを指定する旧来の方法。そのフォルダーに実行可能ファイルが見つからない場合、タスクは失敗します。ToolPath の使用を推奨します。
DbgHelpDllDir文字列--dbghelpdlldirdbghelp.dll を含むフォルダーのパス。
DetectIfObfuscatedブール値 / 文字列false--isobfuscatedターゲットアセンブリがすでに難読化されているかを検出するかどうか。値 warn は警告を出して続行し、exit はアセンブリを処理せずに停止します。
EnableObfuscationAgentブール値true--agent難読化エージェントを実行するかどうか。エージェントはアセンブリを解析し、難読化すると動作しなくなるシンボルを難読化から除外します。
License文字列--licenseライセンスファイルの完全パス、またはライセンスファイルを検索するディレクトリの一覧。
NoConfigurationブール値false--noconfigBabel の構成ファイルに保存された既定値を無視するかどうか。
NoWarnings文字列--nowarn無視する警告コードの一覧。
ProvideCommandLineArgsブール値falseBabel に渡すコマンドラインをログに記録し、CommandLineArgs 出力項目で返すかどうか。
QuickRules文字列--quickruleクイックルールの定義。
RandomSeed文字列--randomseed難読化で使用する乱数ジェネレーターのシード。
RemoveKeyブール値false--removekey難読化されたアセンブリから厳密名を除去するかどうか。
SatelliteAssemblies文字列--satellite処理するサテライトアセンブリファイルの一覧。
SearchDirectories文字列--addsearch参照先のアセンブリを検索するディレクトリの一覧。References もエイリアスとして使用できます。
SearchSatelliteAssembliesブール値true--satelliteターゲットのサテライトアセンブリを検索して処理するかどうか。
ShowLogoブール値true--logoBabel のバージョンと著作権情報を出力するかどうか。
ShowStatisticsブール値true--statistics処理の最後に難読化の統計を表示するかどうか。Boolean のみ。統計をファイルに保存するには StatisticsFile を使用します。
StatisticsFile文字列--statistics難読化の統計を保存するファイルのパス。ShowStatistics が false の場合は無視されます。
TargetAssemblyName文字列nochange--assemblynameターゲットアセンブリ名の取得元。nochange、inputfilename、outputfilename、name=<assembly name> のいずれか。
ToolExe文字列Babel の実行可能ファイルの名前。babel.exe または babel.dll。
ToolPath文字列Babel の実行可能ファイルがあるディレクトリ。
Trace文字列--traceトレースするシンボルを選択する正規表現の一覧。トレースは、シンボルが難読化される理由や難読化されない理由を示し、難読化ルールのデバッグに役立ちます。
Useキー=値--useキーと値のペアで指定する使用オプション。
VerboseLevel整数1--verboseコンソール出力の詳細レベル。0 はメッセージを無効にし、10 を超える値はデバッグ情報を表示します。
WarningsAsErrors文字列--warnaserrorエラーとして報告する警告コードの一覧。エラーが発生すると難読化の処理は停止します。
WarningsAsInfos文字列--warnasinfo情報メッセージとして報告する警告コードの一覧。
XmlRules文字列インラインの XML ルール要素。XML ルールを参照してください。

入力ファイル

属性型既定値コマンドライン説明
InputFile文字列難読化するアセンブリのパス。
KeyContainer文字列--keyname厳密名のキーコンテナーの名前(Windows のみ)。
KeyFile文字列--keyfile難読化されたアセンブリの署名に使用する厳密名キーファイルのパス。
KeyPwd文字列--keypwd厳密名キーファイルまたは証明書のパスワード。
MapInFiles文字列--mapinすでに難読化されたアセンブリの XML マップファイルの一覧。それらのシンボルへの参照をリネームするために使用します。
Project文字列--projectBabel の難読化プロジェクトファイルのパス。
RulesFiles文字列--rules処理する XML ルールファイルの一覧。

出力ファイル

属性型既定値コマンドライン説明
GenerateLogFileブール値false--logfile難読化ログを生成するかどうか。ログファイルの既定の名前は <target assembly>.log です。
GenerateMapOutFileブール値false--mapout難読化マップファイルを生成するかどうか。マップファイルの既定の名前は <target assembly>.xml.map です。
LogFile文字列--logfile難読化ログファイルのパス。
MakeProject文字列--makeprojectタスクの設定から作成する MSBuild プロジェクトファイルのパス。
MapOutFile文字列--mapout難読化マップファイルのパス。
OutputFile文字列--output難読化されたアセンブリのパス。
PdbFile文字列--pdbデバッグシンボルファイルのパス。
PdbPwd文字列--pdbpwdデバッグシンボルファイルのパスワード。

プラグイン

属性型既定値コマンドライン説明
Plugins文字列--pluginプラグインアセンブリファイルの一覧。
PluginsArgumentsキー=値--argumentキーと値のペアで指定するプラグインの引数。

マージと埋め込み

属性型既定値コマンドライン説明
CopyAttributesブール値 / 文字列false--copyattrsマージされたアセンブリのアセンブリレベルの属性を、ターゲットアセンブリにコピーするかどうか。正規表現で、マージできる重複した属性を選択します。
DependenciesManifestブール値true--jsonmanifestアセンブリをマージまたは埋め込むときに、ターゲットアセンブリの依存関係マニフェスト .deps.json を更新するかどうか。
EmbedAssemblies文字列--embedターゲットアセンブリに埋め込むアセンブリファイルの一覧。
Internalizeブール値false--internalizeマージされた型の可視性をターゲットアセンブリ内に制限するかどうか。
MergeAssemblies文字列ターゲットアセンブリにマージするアセンブリファイルの一覧。

リネーム

属性型既定値コマンドライン説明
FlattenNamespacesブール値 / 文字列true--flatnsリネームされた型をグローバル名前空間に移動するかどうか。文字列を指定すると、代わりに、リネームされた型に共通の名前空間名を設定します。
NameLength整数 / キー=値--namelength難読化された名前の最小の長さ。キーと値のペアで、特定の種類のシンボルに長さを割り当てます。
NamePrefix文字列 / キー=値--nameprefix難読化された名前のプレフィックス。$name または任意の文字列。キーと値のペアで、特定の種類のシンボルにプレフィックスを割り当てます。
ObfuscateEventsブール値true--eventsイベントをリネームするかどうか。
ObfuscateFieldsブール値true--fieldsフィールドをリネームするかどうか。
ObfuscateMethodsブール値true--methodsメソッドをリネームするかどうか。
ObfuscateParametersブール値true--parametersメソッドのパラメーターをリネームするかどうか。
ObfuscatePropertiesブール値true--propertiesプロパティをリネームするかどうか。
ObfuscateTypesブール値true--types型をリネームするかどうか。
ObfuscateXamlブール値 / キー=値false--xamlXAML リソースと BAML リソースが参照するシンボルをリネームするかどうか。キーと値のペアでリネームを設定します。
OverloadedRenamingブール値 / キー=値false--overloadedシグネチャの異なるメンバーに同じ名前を再利用するかどうか。キーと値のペアで、オーバーロードするメンバーを選択します。
UnicodeNormalizationブール値 / 文字列false--unicodeUnicode 文字を使って名前を生成するかどうか。無効にすると ASCII 文字が使われます。文字または範囲をコンマで区切った一覧で、文字セットを制限します。
VirtualFunctionsブール値 / キー=値true--virtual仮想メンバーをリネームするかどうか。キーと値のペアで、外部のオーバーライドのリネームを設定します。
XmlDocFiles文字列--xmldocアセンブリと一緒に処理する XML ドキュメントファイルの一覧。XmlDoc も旧来のエイリアスとして使用できます。

制御フロー難読化

属性型既定値コマンドライン説明
ControlFlowObfuscationブール値 / キー=値false--controlflowメソッドの制御フローを難読化するかどうか。キーと値のペアでアルゴリズムを選択します。チェーン状態 Ultimate を有効にする chain=on も指定できます。
ControlFlowIterations整数3--iterations制御フロー難読化アルゴリズムの反復回数。0 は制御フロー難読化を無効にします。ILIterations と Iterations もエイリアスとして使用できます。
EmitInvalidOpcodesブール値 / 文字列false--invalidopcodes無効な MSIL オペコードを出力するかどうか。出力すると、アセンブリは検証不可能になります。値 enhanced は、無効なオペコードをさらに挿入します。

暗号化と保護

属性型既定値コマンドライン説明
DebuggingProtectionブール値false--antidebuggingデバッグ保護を有効にするかどうか。
DynamicProxyブール値 / 文字列false--proxyメソッド呼び出しを、動的に生成したプロキシでラップするかどうか。値には、プロキシ化する呼び出しとして internal、external、all のいずれかを指定します。
DynamicProxyCallFilters文字列--proxyプロキシ化するメソッド呼び出しを選択する正規表現の一覧。
MsilEncryptionブール値 / 文字列false--msilencryptionメソッドの MSIL コードを暗号化するかどうか。正規表現で、暗号化するメソッドをシグネチャによって選択します。
ResourceEncryptionブール値 / キー=値false--resourceencryptionマネージドリソースを暗号化するかどうか。キーと値のペアで、暗号化と圧縮を個別に有効にします。
SingleFile 12.0ブール値false--singlefileターゲットが単一ファイル、トリミング、NativeAOT のいずれかのアプリケーションとして公開されることを示します。デスクトップターゲットでは、このような公開に対して改ざん検出のチェックは機能しないため、改ざん検出が要求されると Babel は警告を出します。
StringEncryptionブール値 / 文字列false--stringencryptionユーザー文字列を暗号化するかどうか。値でアルゴリズムを選択します。xor、hash、stream 12.0 Ultimate のいずれか。
SuppressIldasmブール値false--ildasmILDASM が難読化されたアセンブリを逆アセンブルできないようにするかどうか。
SuppressReflectionブール値 / 整数false--reflectionリフレクションを利用するツールを停止させる無効なメタデータを出力するかどうか。整数でレベルを設定します。レベルが高いほど、生成される無効なメタデータが多くなります。
TamperingDetectionブール値false--tamperingdetection改ざん検出を有効にするかどうか。
TrustedBundle 12.0 Ultimate文字列--trustedbundleiOS のパッケージの整合性チェックがピン留めする、信頼された iOS のバンドル ID(CFBundleIdentifier)。
TrustedSigner 12.0 Ultimate文字列--trustedsignerAndroid のパッケージの整合性チェックがピン留めする、信頼された Android APK 署名証明書の SHA-256 フィンガープリントの一覧。フィンガープリントはそれぞれ 16 進数 64 文字です。
TrustedTeam 12.0 Ultimate文字列--trustedteamiOS のパッケージの整合性チェックがピン留めする、信頼された Apple Developer のチーム ID。
ValueEncryptionブール値 / キー=値false--valueencryption定数値と配列を暗号化するかどうか。キーと値のペアで、暗号化する値の種類を選択します。

最適化

属性型既定値コマンドライン説明
CleanAttributesブール値 / 文字列false--cleanattrs不要な属性を除去するかどうか。正規表現で、除去する属性型の完全名を選択します。
ConstRemovalブール値false--constremoval定数フィールドを除去するかどうか。
DeadCodeEliminationブール値 / 文字列false--deadcodeアプリケーションが使用していないメソッド、プロパティ、イベントを除去するかどうか。正規表現で、検索を開始するエントリポイントを設定します。
DisgregateRemovalブール値false--disgregateremovalプロパティとイベントのメタデータを除去するかどうか。
EnumRemovalブール値false--enumremovalSystem.Enum 型を除去するかどうか。
InlineExpansionブール値false--inlineexpansionインライン展開の対象としてマークされたメソッドの呼び出しを、メソッド本体に置き換えるかどうか。
SealClassesブール値false--sealどの継承チェーンでも使用されていないクラスをシールするかどうか。

コード生成

属性型既定値コマンドライン説明
AddReferences文字列--addreferenceターゲットアセンブリの参照として追加するアセンブリの一覧。
Framework文字列処理するアセンブリに強制するターゲットフレームワーク名。
GenerateDebugブール値 / 文字列false--debug難読化されたアセンブリのデバッグシンボルを生成するかどうか。値としてシンボルストアのパスを指定できます。
Instrumentブール値 / 文字列false--instrumentコードをインストルメント化するかどうか。正規表現で、インストルメント化するメソッドの完全名を選択します。
InstrumentEmptyMethodsブール値false--emptymethods本体が空のメソッドをインストルメント化するかどうか。
ModuleInitializerブール値 / 文字列false--moduleinitializerターゲットアセンブリにモジュール初期化子のコードを追加するかどうか。
ModuleInitializerTarget文字列--moduleinitializerモジュールの読み込み後に呼び出される、パラメーターのない静的メソッドのシグネチャ。
ModuleVersionIdブール値 / 文字列false--moduleversionid難読化されたアセンブリのモジュールバージョン ID(MVID)を設定するかどうか。GUID 文字列を指定するとその値が設定され、指定しない場合はランダムな値が生成されます。

パッケージ

属性型既定値コマンドライン説明
AndroidSigningKeyAlias文字列--keyaliasAndroid キーストア内のキーのエイリアス(APK パッケージ)。
AndroidSigningKeyPass文字列--keypassAndroid キーストア内のキーのパスワード(APK パッケージ)。
AndroidSigningKeyStore文字列--keystoreAndroid キーストアファイル(APK パッケージ)。
AndroidSigningStorePass文字列--storepassAndroid キーストアのパスワード(APK パッケージ)。
RemoveFiles文字列--removeパッケージから削除するデプロイ済みアセンブリの一覧。
SkipFiles文字列--skip難読化しないデプロイ済みアセンブリの一覧。
TakeFiles文字列--take難読化するデプロイ済みアセンブリの一覧。
XapCompressionLevel整数6--compressパッケージの圧縮レベル。0(圧縮なし)から 9 まで(XAP パッケージ)。

タスクの出力

出力説明
CommandLineArgsBabel に渡されたコマンドライン。ProvideCommandLineArgs が true の場合に利用できます。
ExitCodeBabel が返した終了コード。

例

次のタスクは、.NET MAUI の Android プロジェクトの中間アセンブリを、STREAM 文字列暗号化と、APK 署名証明書にピン留めした改ざん検出で難読化し、Babel に渡されたコマンドラインを取得します。

<Target Name="Obfuscate" AfterTargets="Compile" Condition="'$(DesignTimeBuild)' != 'true'"> <Babel InputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" OutputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" StringEncryption="stream" ControlFlowObfuscation="true" ControlFlowIterations="3" TamperingDetection="true" TrustedSigner="2924C53EE9C511E9F26E0720FD8151064F7621681667D7AB1899E551CDB25104" ProvideCommandLineArgs="true"> <Output TaskParameter="CommandLineArgs" ItemName="BabelCommandLineArgs" /> </Babel> <Message Importance="high" Text="@(BabelCommandLineArgs, ' ')" /> </Target>
Last updated on