パッケージリファレンス
Babel.Obfuscator パッケージが定義するすべての MSBuild プロパティ、項目、ターゲットと、パッケージのプロパティと Babel タスクの属性との対応を示します。
パッケージのプロパティ
次のプロパティは、パッケージ自体を制御します。難読化の設定は、プロパティの対応の表に記載されています。
| プロパティ | 既定値 | 説明 |
|---|---|---|
BabelEnabled | true | 全体のスイッチ。false の場合、公開時の調整も含め、Babel のターゲットは一切実行されません。 |
BabelPublishEnabled | $(BabelEnabled) | マージされたアセンブリと埋め込みアセンブリを公開対象から削除するかどうか。 |
BabelUpdateDependencyFile | $(BabelEnabled) | 難読化の後に、ビルドと公開の .deps.json ファイルを更新するかどうか。 |
BabelOverrideCompile | true | パッケージが CoreCompile の後に難読化ステップを挿入するかどうか。ObfuscateBuild ターゲットを自分で組み込む場合は、false に設定します。 |
RunBabelAfterBuild | false | true の場合、Babel はビルドの最後に、中間アセンブリではなく $(TargetPath) に対して実行されます。 |
BabelBeforeTargets | 指定した名前のターゲットの前に難読化ステップを実行し、既定の配置を無効にします。 | |
BabelAfterTargets | 指定した名前のターゲットの後に難読化ステップを実行し、既定の配置を無効にします。 | |
BabelPackageDir | パッケージのルート | 展開されたパッケージのルートフォルダー。 |
BabelTaskDir | ホストごと | Babel タスクとツールを読み込むフォルダー。ビルドツールの選択を参照してください。 |
BabelPath | $(BabelTaskDir) | 実行する Babel の実行可能ファイルがあるフォルダー(タスクの属性 ToolPath)。 |
BabelExe | Babel の実行可能ファイルの名前。babel.exe または babel.dll(タスクの属性 ToolExe)。 | |
BabelInputFile | 中間アセンブリ | 難読化するアセンブリ。パッケージが計算します。上書きする場合は、設定用のターゲットで行います。 |
BabelOutputFile | $(BabelInputFile) | 難読化された出力。パッケージが計算します。上書きする場合は、設定用のターゲットで行います。 |
BabelLicense | プロジェクトフォルダーまたは親フォルダーで見つかった babel.licenses | ライセンスファイルのパス、ライセンスキー、または floating: 形式のユーザーキー。 |
BabelLicenseDir | babel.licenses が見つかったフォルダー。パッケージが設定します。 | |
SymbolsRenaming | true | すべてのリネーム機能を一度に有効または無効にします。 |
NoConfiguration | true | Babel が構成ファイルを無視するかどうか。 |
GenerateDebug | PDB が存在する場合は true | 難読化されたアセンブリのデバッグシンボルを生成するかどうか。 |
CopyOutputSymbolsToPublishDirectory | Release では false | SDK の標準プロパティ。PDB ファイルが公開されないように、パッケージは Release でこれをオフにします。 |
BabelProvideCommandLineArgs | false | Babel のコマンドラインを、ログと @(BabelCommandLineArgs) 項目に書き出します。 |
BabelWarningsAsErrors | エラーとして報告する警告コード。評価モードで実行されるビルドを失敗させるには、W00000 を設定します。 | |
BabelWarningsAsInfos | 情報メッセージとして報告する警告コード。 | |
BabelWarningsToIgnore | 抑制する警告コード。 | |
BabelExitCode | 出力:Babel タスクの終了コード。CoreObfuscate の後に利用できます。 |
パッケージの項目
| 項目 | 説明 |
|---|---|
BabelRules | XML ルールファイル。プロジェクトフォルダーの babelRules.xml は自動的に追加されます。 |
MergeAssembly | ターゲットアセンブリにマージするアセンブリ。 |
EmbedAssembly | ターゲットアセンブリに埋め込むアセンブリ。 |
MapInFile | すでに難読化されたアセンブリの XML マップファイル。 |
BabelPlugin | 読み込むプラグインアセンブリ。 |
BabelSearchDirectories | アセンブリの検索ディレクトリ。プロジェクトの参照から計算されます。置き換えや追加は、設定用のターゲットで行います。 |
BabelTargetReferences | 参照として渡される追加の検索エントリ。 |
AddReferences | 難読化されたアセンブリの参照として追加するアセンブリ。 |
SatelliteAssembly | 処理するサテライトアセンブリ。 |
XmlDocumentationFile | アセンブリと一緒に処理する XML ドキュメントファイル。 |
BabelCommandLineArgs | 出力:Babel に渡されたコマンドライン。BabelProvideCommandLineArgs が true の場合に利用できます。 |
ターゲット
| ターゲット | 説明 |
|---|---|
ObfuscateBuild | ビルドに挿入される難読化ステップ。ObfuscateSettings、Obfuscate の順に実行します。 |
ObfuscateSettings | 次の設定用ターゲットを実行して、Babel タスクの構成を準備します。 |
ObfuscateDefaultSettings | リネームの既定値を適用し、ライセンスファイルを検索し、babelRules.xml を追加して、検索ディレクトリを構築します。 |
ObfuscateFrameworkSettings | 処理するアセンブリを選択します。中間アセンブリ、または RunBabelAfterBuild が true の場合は $(TargetPath) です。 |
ObfuscateSetupBabelFiles | BabelInputFile と BabelOutputFile を設定し、PDB が存在する場合は GenerateDebug を有効にします。 |
ObfuscateCustomSettings、SetupObfuscate、ConfigureBabel | 空のターゲット。Babel が実行される前に、計算された構成を調整するには、これらを再定義します。 |
Obfuscate | BeforeObfuscate、CoreObfuscate、AfterObfuscate を実行します。 |
BeforeObfuscate | 空のターゲット。Babel タスクの直前にタスクを実行するには、これを再定義します。 |
CoreObfuscate | Babel タスクを実行します。再定義しないでください。 |
AfterObfuscate | 空のターゲット。Babel タスクの直後にタスクを実行するには、これを再定義します。 |
UpdateBabelBuildDependencyFile | GenerateBuildDependencyFile の後:マージされたアセンブリ、埋め込みアセンブリ、パッケージを、ビルドの .deps.json から削除します。 |
UpdateBabelPublishDependencyFile | GeneratePublishDependencyFile の後:公開の .deps.json に対して同じ処理を行います。 |
UpdateBabelFilesToPublish | ComputeFilesToPublish の後:マージされたアセンブリと埋め込みアセンブリを公開対象から削除します。 |
OverrideCompileWithBabel | PrepareForBuild の後:ステップが移動されている場合とデザイン時ビルドの場合を除き、CoreCompile の後に ObfuscateBuild を挿入します。 |
EnableObfuscationFlag | コンパイルによって起動されます。コンパイラーが実際に実行された場合にだけ、ObfuscateBuild を有効にします。 |
プロパティの対応
次の表は、Babel タスクのすべての属性を、パッケージが読み取る MSBuild のプロパティまたは項目に対応付けたものです。プロパティは、対応するコマンドラインスイッチと同じ値を受け付けます。12.0 と示された属性は、バージョン 12 で追加されました。
| Babel タスクの属性 | 種類 | パッケージのプロパティまたは項目 |
|---|---|---|
AddReferences | 項目 | @(AddReferences) |
AndroidSigningKeyAlias | プロパティ | AndroidSigningKeyAlias |
AndroidSigningKeyPass | プロパティ | AndroidSigningKeyPass |
AndroidSigningKeyStore | プロパティ | AndroidSigningKeyStore |
AndroidSigningStorePass | プロパティ | AndroidSigningStorePass |
BabelDirectory | プロパティ | BabelDirectory |
CleanAttributes | プロパティ | CleanAttributes |
ConstRemoval | プロパティ | ConstRemoval |
ControlFlowIterations | プロパティ | ControlFlowIterations(ILIterations もエイリアスとして使用できます) |
ControlFlowObfuscation | プロパティ | ControlFlowObfuscation |
CopyAttributes | プロパティ | MergeCopyAttributes |
DbgHelpDllDir | プロパティ | DbgHelpDllDir |
DeadCodeElimination | プロパティ | DeadCodeElimination |
DebuggingProtection | プロパティ | DebuggingProtection |
DependenciesManifest | プロパティ | DependenciesManifest |
DetectIfObfuscated | プロパティ | DetectIfObfuscated |
DisgregateRemoval | プロパティ | DisgregateRemoval |
DynamicProxy | プロパティ | DynamicProxy |
DynamicProxyCallFilters | プロパティ | DynamicProxyCallFilters |
EmbedAssemblies | 項目 | @(EmbedAssembly) |
EmitInvalidOpcodes | プロパティ | EmitInvalidOpcodes |
EnableObfuscationAgent | プロパティ | EnableObfuscationAgent |
EnumRemoval | プロパティ | EnumRemoval |
FlattenNamespaces | プロパティ | FlattenNamespaces |
Framework | プロパティ | Framework |
GenerateDebug | プロパティ | GenerateDebug |
GenerateLogFile | プロパティ | GenerateLogFile |
GenerateMapOutFile | プロパティ | GenerateMapOutFile |
InlineExpansion | プロパティ | InlineExpansion |
InputFile | プロパティ | BabelInputFile |
Instrument | プロパティ | BabelInstrument |
InstrumentEmptyMethods | プロパティ | InstrumentEmptyMethods |
Internalize | プロパティ | MergeInternalize |
KeyContainer | プロパティ | KeyContainerName |
KeyFile | プロパティ | KeyOriginatorFile |
KeyPwd | プロパティ | SigningCertPassword |
License | プロパティ | BabelLicense |
LogFile | プロパティ | BabelLogFile |
MakeProject | プロパティ | MakeBabelProjectFile |
MapInFiles | 項目 | @(MapInFile) |
MapOutFile | プロパティ | BabelMapOutFile |
MergeAssemblies | 項目 | @(MergeAssembly) |
ModuleInitializer | プロパティ | ModuleInitializer |
ModuleInitializerTarget | プロパティ | ModuleInitializerTarget |
ModuleVersionId | プロパティ | ModuleVersionId |
MsilEncryption | プロパティ | MsilEncryption |
NameLength | プロパティ | NameLength |
NamePrefix | プロパティ | NamePrefix |
NoConfiguration | プロパティ | NoConfiguration |
NoWarnings | プロパティ | BabelWarningsToIgnore |
ObfuscateEvents | プロパティ | ObfuscateEvents |
ObfuscateFields | プロパティ | ObfuscateFields |
ObfuscateMethods | プロパティ | ObfuscateMethods |
ObfuscateParameters | プロパティ | ObfuscateParameters |
ObfuscateProperties | プロパティ | ObfuscateProperties |
ObfuscateTypes | プロパティ | ObfuscateTypes |
ObfuscateXaml | プロパティ | ObfuscateXaml |
OutputFile | プロパティ | BabelOutputFile |
OverloadedRenaming | プロパティ | OverloadedRenaming |
PdbFile | プロパティ | PdbFile |
PdbPwd | プロパティ | PdbPwd |
Plugins | 項目 | @(BabelPlugin) |
PluginsArguments | プロパティ | PluginsArguments |
ProvideCommandLineArgs | プロパティ | BabelProvideCommandLineArgs |
RandomSeed | プロパティ | RandomSeed |
References | 項目 | @(BabelTargetReferences) |
RemoveFiles | プロパティ | BabelRemoveFiles |
ResourceEncryption | プロパティ | ResourceEncryption |
RulesFiles | 項目 | @(BabelRules) |
SatelliteAssemblies | 項目 | @(SatelliteAssembly) |
SealClasses | プロパティ | SealClasses |
SearchDirectories | 項目 | @(BabelSearchDirectories) |
SearchSatelliteAssemblies | プロパティ | SearchSatelliteAssemblies |
ShowLogo | プロパティ | ShowLogo |
ShowStatistics | プロパティ | ShowStatistics |
SingleFile | プロパティ | PublishSingleFile(SDK の標準プロパティ) |
SkipFiles | プロパティ | BabelSkipFiles |
StatisticsFile | プロパティ | StatisticsFile |
StringEncryption | プロパティ | StringEncryption |
SuppressIldasm | プロパティ | SuppressIldasm |
SuppressReflection | プロパティ | SuppressReflection |
TakeFiles | プロパティ | BabelTakeFiles |
TamperingDetection | プロパティ | TamperingDetection |
TargetAssemblyName | プロパティ | TargetAssemblyName |
ToolExe | プロパティ | BabelExe |
ToolPath | プロパティ | BabelPath |
Trace | プロパティ | Trace |
TrustedBundle 12.0 | プロパティ | TrustedBundle |
TrustedSigner 12.0 | プロパティ | TrustedSigner(複数のフィンガープリントを ; で区切って指定) |
TrustedTeam 12.0 | プロパティ | TrustedTeam |
UnicodeNormalization | プロパティ | UnicodeNormalization |
Use | プロパティ | Use |
ValueEncryption | プロパティ | ValueEncryption |
VerboseLevel | プロパティ | VerboseLevel |
VirtualFunctions | プロパティ | VirtualFunctions |
WarningsAsErrors | プロパティ | BabelWarningsAsErrors |
WarningsAsInfos | プロパティ | BabelWarningsAsInfos |
XapCompressionLevel | プロパティ | XapCompressionLevel |
XmlDocFiles | 項目 | @(XmlDocumentationFile) |
XmlRules | プロパティ | XmlRules |
文字列暗号化アルゴリズムの設定
パッケージの StringEncryption プロパティは、コマンドラインの --stringencryption スイッチとまったく同じように、文字列暗号化を有効にし、アルゴリズムを選択します。指定できる値は xor、hash、stream、custom です(それぞれの説明は文字列暗号化を参照)。Boolean の true は既定のアルゴリズムで文字列暗号化を有効にし、アルゴリズム名を指定すると、文字列暗号化を有効にしたうえでそのアルゴリズムを選択します。
たとえば、STREAM アルゴリズム(文字列ごとの認証付き暗号化で、完全にマネージドコードで実装され、AOT、トリミング、FIPS に対応し、.NET Framework から .NET 10 まで、Android、iOS、MAUI を含めてサポート)で文字列を暗号化するには、プロジェクトファイルに次の内容を追加します。
<PropertyGroup>
<StringEncryption>stream</StringEncryption>
</PropertyGroup>STREAM アルゴリズム Ultimate は、下位のエディションには含まれていません。下位のエディションでは、stream は既定のアルゴリズムにフォールバックします。
.NET の Android、iOS、MAUI プロジェクトでは、プラットフォームの相互運用レイヤーのために型名とメンバー名がそのまま残るように、文字列暗号化だけを適用する形で難読化を実行してください。