外部暗号化ファイルとしての機能
このサンプルでは、プレミアム機能をアプリケーションとは別に配布する暗号化されたコードとして提供し、その機能を許可するライセンスも顧客が持っている場合にだけロックを解除します。Babel Obfuscator は、メソッドの暗号化された本体を埋め込む代わりに、外部の .eil ファイルに切り出せます。実行時に、Babel Virtual Machine はそのファイル(「get stream」)とパスワード(「get password」)をアプリケーションに要求します。このサンプルでは、両方のフックを有効な Babel Licensing のライセンスで制御するため、プレミアム機能のロックを解除するには 2 つのものが同時に必要です。アプリと同じ場所に配置した premium.eil ファイルと、その機能を許可する、署名され、ハードウェアに紐付けたライセンスです。
このサンプルを使用するには、Babel Obfuscator のサイトライセンス(Ultimate、Server、Data Center のいずれかのエディション)と Babel Licensing が必要です。ソースコードは GitHub で公開しています。
git clone https://github.com/babelfornet/external-encrypted-code-console-example.git機能に source が設定され、internal は設定されていないため、Babel は暗号化された本体を埋め込まずに premium.eil へ出力します。
[Obfuscation(Feature = "msil encryption:source=premium;password=...")] // no internal -> external .eil
public string Analyze(string data) { /* premium body, stripped to premium.eil */ }
[Obfuscation(Feature = "msil encryption get stream")] // returns the premium.eil stream (license-gated)
[Obfuscation(Feature = "msil encryption get password")] // returns the password (license-gated)このプロジェクトは、小さな AfterTargets="Build" の MSBuild ターゲットで、premium.eil をビルドの中間フォルダーから出力へコピーします。そのため、このファイルを配置することも、機能を別売りにするためにあえて含めないこともできます。
Standard license, no premium.eil -> Premium blocked
Premium license, no premium.eil -> Premium blocked (feature not delivered)
Standard license, premium.eil -> Premium blocked (not licensed)
Premium license + premium.eil -> Premium analysis runs.eil の仕組みについて詳しくは、コード暗号化のマニュアルの外部コードファイルを参照してください。