Babel Obfuscator ツール Ultimate
Babel.Obfuscator.Tool は、babel コマンドラインを dotnet ツールとしてパッケージ化したものです。.NET SDK さえインストールされていれば、Windows、Linux、macOS のターミナルやスクリプトから Babel Obfuscator を実行できます。
パッケージの内容
Babel.Obfuscator.Tool は、babel コマンドをインストールする .NET ツール パッケージです。babel_net* zip パッケージに含まれているものと同じコマンドラインツールで、オプションも同じです。Ultimate エディションと、Babel Licensing のサイトエディション(Server と Data Center)に付属しています。パッケージには、サポートされるランタイム(.NET 6.0 から .NET 10.0)ごとにツールのビルドが 1 つずつ含まれており、dotnet CLI がコンピューター上の SDK に合ったビルドを選択します。各ビルドには次のものが含まれます。
- コマンドラインツール
babel.dllと、そのランタイム構成。 BabelEncryptプラグイン。--pluginですぐに読み込めます。- Babel の MSBuild タスクのアセンブリ
Babel.Build.dll。Babel タスクをファイルパスで参照するビルドスクリプト向けです。
Babel.Obfuscator と同様に、ツールパッケージは nuget.org では公開されていません。パッケージのホスティングで説明しているとおり、独自のフィードでホストしてください。
ツールを使用する場面
このツールは、MSBuild ビルドのステップとしてではなく、自分で Babel を実行したい場合に使用します。
- すでにビルドされたアセンブリの難読化。たとえば、別のビルドシステムで生成された .NET Framework のバイナリ。
- 多数のアセンブリを対象とした、スクリプトやバッチによる難読化と、AI に適したモードによるエージェント主導のオートメーション。
- Linux や macOS のビルド用コンピューターとビルドエージェントでの、コマンドラインツールの実行。
- スタックトレースのデコード(
--stacktrace)、ライセンスの確認(--license)、コマンドラインからの MSBuild プロジェクトの生成(--makeproject)などのユーティリティコマンド。
このツールは、dotnet build や dotnet publish のパイプラインで使う Babel.Obfuscator パッケージの代わりにはなりません。.NET SDK はコンパイル後に IL を書き換えます(依存関係の解決、トリミング、単一ファイルへのバンドル、AOT コンパイル)。bin、obj、公開フォルダーから取り出したアセンブリはすでにこれらのステップを経ているため、その後で難読化することはサポートされていません。代わりにパッケージを参照してください。パッケージは、ビルド内の適切な位置で Babel を実行します。
ツールのインストール
グローバルツール
グローバルツールは、ユーザーごとに 1 回インストールすれば、どのターミナルからでも使用できます。
dotnet tool install Babel.Obfuscator.Tool -gフィードが NuGet.config ファイルに登録されていない場合は、明示的に指定します。ソースには、フィードの URL またはローカルフォルダーを指定できます。
dotnet tool install Babel.Obfuscator.Tool -g --add-source ~/NuGetLinux と macOS では、ツールフォルダーがパスに含まれていることを確認してください。含まれていないと、babel コマンドが見つかりません。
export PATH="$PATH:$HOME/.dotnet/tools"ローカルツール
ローカルツールは、ツールマニフェストによってリポジトリに固定されるため、すべての開発者と CI エージェントが同じバージョンの Babel を実行します。
dotnet new tool-manifest
dotnet tool install Babel.Obfuscator.Toolこれにより、ツールが .config/dotnet-tools.json に記録されます。このファイルはコミットしてください。ほかのコンピューターでは、dotnet tool restore が固定されたバージョンをインストールします。ローカルツールは dotnet CLI を通じて呼び出します。
dotnet babel --versionアップデートと削除
dotnet tool update Babel.Obfuscator.Tool -g
dotnet tool list -g
dotnet tool uninstall Babel.Obfuscator.Tool -gローカルツールの場合は -g を省きます。同じコマンドはインストールでも説明しています。
ツールのライセンス
このツールには製品と同じライセンスが必要です。dotnet ツールには babel.licenses をコピーできるインストールフォルダーがないため、次のいずれかの方法で Babel にライセンスを渡します。
BABEL_LICENSE_PATH環境変数に、ライセンスファイルの完全なパスを設定します。開発用のコンピューターとビルドエージェントでは、この方法をお勧めします。
export BABEL_LICENSE_PATH=~/Babel/babel.licenses- 呼び出しのたびに
--licenseを指定し、ライセンスファイルのパス、または検索するフォルダーのパスを渡します。 --license env:BABEL_LICENSEを指定します。この変数にはライセンスキーを格納します。キーをシークレットに保存するビルドサーバーに適した方法です。フローティングライセンスの場合は、ユーザーキーをfloating:<user key>として格納します。
引数なしの babel --license は、使用中のライセンスを表示します。ライセンスファイルは 1 つの製品バージョンに対してのみ有効であることに注意してください。ツールと同じバージョンに付属していたファイルを使用し、両方を一緒にアップデートしてください。
ツールの使用
babel コマンドは、コマンドラインとコマンドラインリファレンスに記載されている構文とスイッチを受け付けます。一般的な呼び出しでは、難読化するアセンブリ、出力ファイル、有効にする機能を指定します。
babel MyApp.dll --output obfuscated/MyApp.dll --stringencryption stream --controlflow if=on --controlflow switch=on --iterations 3 --resourceencryption --rules babelRules.xml --mapoutこのマニュアルで説明しているすべての機能は、ツールから利用できます。ルールは --rules、マージと埋め込みは追加のアセンブリ引数と --embed、マップファイルは --mapin と --mapout、プラグインは --plugin、マネージド AES の復号ルーチンは --use encryption=aesmanaged で指定します。ローカルツールの場合は、コマンドの前に dotnet を付けます。
スクリプトとオートメーション
バージョン 11.7 以降、コマンドラインには、スクリプトとエージェント向けに設計された AI に適したモードがあります。
babel MyApp.dll --stringencryption stream --format ndjson --quiet --strict-exit--format json または ndjson は、出力を機械可読のストリームに変え、人が読むための診断メッセージを標準エラーに送ります。--quiet はバナーを省き、対話型プロンプトがあればすぐに失敗させます。--strict-exit は、無効な引数、入力の欠落、難読化、ライセンス、署名のそれぞれの失敗に対して、異なる終了コードを返します。
ビルドサーバーでの実行
このツールは、ビルド成果物を独立したステップで難読化するパイプラインに適しています。ツールマニフェストをリポジトリにコミットし、フィードを NuGet.config で設定しておけば(GitHub Packages に対して認証する構成については、GitHub Actions のサンプルを参照してください)、GitHub Actions のジョブは次のようになります。
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Restore tools
run: dotnet tool restore
env:
PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
- name: Obfuscate
run: dotnet babel artifacts/MyLib.dll --license env:BABEL_LICENSE --stringencryption stream --strict-exit
env:
BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}FIPS が有効なホスト
バージョン 11.8 以降、ツールのバイナリ自体がマネージド AES アルゴリズムで難読化されているため、OpenSSL の FIPS プロバイダーが壊れているホストでも babel は起動します。ただし、そのようなホストで保護するアセンブリには、アセンブリ自身のマネージド復号ルーチンが必要です。FIPS 準拠で説明しているとおり、文字列暗号化には STREAM アルゴリズムを使用し、その他の暗号化機能には --use encryption=aesmanaged を使用してください。
トラブルシューティング
babel: command not found:グローバルツールのフォルダーがパスに含まれていません。~/.dotnet/toolsをPATHに追加するか、ローカルツールを使用してdotnet babelを実行します。- .NET のインストールを求めるメッセージ:選択されたツールのビルドには、対応する .NET ランタイム(6.0 から 10.0)が必要です。そのランタイムをインストールするか、
DOTNET_ROLL_FORWARD=Majorを設定して、より新しいランタイムでツールを実行します。 - 「A valid license could not be found」と表示される:
BABEL_LICENSE_PATHまたは--license引数を確認してから、babel --licenseを実行して、Babel が読み込んだライセンスを確認します。別のバージョン用のライセンスファイルは、有効でないと報告されます。 - 出力が Babel Desktop での実行結果と異なる:Babel Desktop は
.babelプロジェクトに保存された設定を適用しますが、ツールはコマンドラインのスイッチだけを適用します。2 つの構成、特に難読化エージェントとルールを比較してください。