サブスクリプションライセンスと暗号化された Pro コード
このサンプルでは、猶予期間付きの期限付き(サブスクリプション)ライセンスを示します。サブスクリプション専用の機能は、Babel Obfuscator の MSIL コード暗号化で保護されます。Babel Virtual Machine は復号用のパスワードをライセンスそのものから取得するため、Pro コードは、猶予期間を含めてサブスクリプションが有効な間だけ実行できます。サブスクリプションの期限が切れて猶予期間も過ぎると、ライセンスは検証に成功しなくなり、暗号化された Pro コードは実行されなくなります。
このサンプルを使用するには、Babel Obfuscator のサイトライセンス(Ultimate、Server、Data Center のいずれかのエディション)と Babel Licensing が必要です。ソースコードは GitHub で公開しています。
git clone https://github.com/babelfornet/subscription-license-console-example.gitライセンスには 2 つの日付があります。1 つはエンジンが強制する ExpireDate で、猶予期間の終了日(最終期限)に設定します。もう 1 つは subscription-end フィールドで、更新期日を示すだけの緩やかな期限です。この 2 つの日付の間は、アプリは動作し続けますが、ユーザーに更新を促します。最終期限を過ぎると、ライセンスは検証に成功しなくなり、暗号化された Pro コードはロックされます。
Active -> Pro forecast runs
Grace (lapsed) -> Pro forecast runs + "please renew" warning
Expired (>grace) -> Pro forecast locked (BVM cannot decrypt it)Pro メソッドは暗号化されており、「get password」フックを通じてライセンスからパスワードを取得します。
[Obfuscation(Feature = "msil encryption:internal=true;source=pro;password=...")]
public static double Forecast(double[] history) { /* protected body */ }付属の LicenseGenerator プロジェクトでサブスクリプションライセンスを生成できるため(--days、--grace、--expired)、それぞれの状態を試せます。保護は暗号によるものなので、日付のチェックにパッチを当ててサブスクリプションを延長しようとしても意味がありません。有効なライセンスがなければパスワードはなく、Pro コードは復号できません。