Fonctionnalité sous forme de fichier chiffré externe
Cet exemple livre une fonctionnalité premium sous la forme de code chiffré distribué séparément de
l’application, déverrouillé uniquement lorsque le client dispose aussi d’une licence qui l’accorde.
Babel Obfuscator peut extraire le corps chiffré d’une méthode vers un fichier .eil externe au lieu
de l’incorporer. À l’exécution, la machine virtuelle Babel demande à l’application ce fichier
(get stream) et son mot de passe (get password). Cet exemple conditionne les deux hooks
à une licence Babel Licensing valide : déverrouiller la fonctionnalité premium exige donc
deux choses à la fois, le fichier premium.eil déployé à côté de l’application et une licence
signée, liée à la machine, qui accorde la fonctionnalité.
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/external-encrypted-code-console-example.gitComme source est défini pour la fonctionnalité mais pas internal, Babel écrit le corps chiffré
dans premium.eil au lieu de l’incorporer :
[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)Le projet copie premium.eil du dossier intermédiaire du build vers la sortie au moyen d’une petite
cible MSBuild AfterTargets="Build", afin qu’il puisse être déployé, ou délibérément retenu pour
vendre la fonctionnalité à part.
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 runsVoir Fichiers de code externes dans le manuel
du chiffrement du code pour en savoir plus sur le mécanisme .eil.