Licence par abonnement avec code Pro chiffré
Cet exemple présente une licence à durée limitée (par abonnement) avec une période de grâce, dans laquelle les fonctionnalités réservées à l’abonnement sont protégées par le chiffrement du code MSIL de Babel Obfuscator. Le code Pro ne peut s’exécuter que tant que l’abonnement, période de grâce comprise, est valide, car la machine virtuelle Babel obtient le mot de passe de déchiffrement à partir de la licence elle-même. Lorsque l’abonnement a expiré et que la période de grâce est écoulée, la licence n’est plus valide et le code Pro chiffré cesse de s’exécuter.
Pour utiliser cet exemple, vous avez besoin d’une licence de site pour Babel Obfuscator (édition Ultimate, Server ou Data Center) et de Babel Licensing. Le code source est disponible sur GitHub :
git clone https://github.com/babelfornet/subscription-license-console-example.gitLa licence porte deux dates : une date ExpireDate, appliquée par le moteur et fixée à la fin de
la période de grâce (la limite stricte), et un champ indicatif subscription-end, qui marque la
date Ă laquelle le renouvellement est dĂ». Entre ces deux dates, l’application continue Ă
fonctionner mais rappelle à l’utilisateur de renouveler ; après la limite stricte, la licence n’est
plus valide et le code Pro chiffré est verrouillé.
Active -> Pro forecast runs
Grace (lapsed) -> Pro forecast runs + "please renew" warning
Expired (>grace) -> Pro forecast locked (BVM cannot decrypt it)La méthode Pro est chiffrée et obtient son mot de passe de la licence par un hook get password :
[Obfuscation(Feature = "msil encryption:internal=true;source=pro;password=...")]
public static double Forecast(double[] history) { /* protected body */ }Un projet associé, LicenseGenerator, émet des licences par abonnement (--days, --grace,
--expired) pour vous permettre d’essayer chaque état. Comme la protection est cryptographique,
prolonger l’abonnement en modifiant un contrôle de date ne sert à rien : sans licence valide, il n’y
a pas de mot de passe, et le code Pro ne peut pas être déchiffré.