Funktion als externe verschlüsselte Datei
Dieses Beispiel stellt eine Premium-Funktion als verschlüsselten Code bereit, der getrennt von der
Anwendung ausgeliefert wird. Er wird nur freigeschaltet, wenn der Kunde auch eine Lizenz hat, die
die Funktion gewährt. Babel Obfuscator kann den verschlüsselten Rumpf einer Methode in eine externe
.eil-Datei auslagern, statt ihn einzubetten. Zur Laufzeit fragt die Babel Virtual Machine die
Anwendung nach dieser Datei (get stream) und nach ihrem Passwort (get password). Dieses Beispiel
bindet beide Hooks an eine gültige Lizenz von Babel Licensing. Um die Premium-Funktion
freizuschalten, braucht es also zwei Dinge zugleich: die Datei premium.eil, die neben der Anwendung
bereitgestellt wird, und eine signierte, hardwaregebundene Lizenz, die die Funktion gewährt.
Für dieses Beispiel brauchen Sie eine Standortlizenz für Babel Obfuscator (Edition Ultimate, Server oder Data Center) und Babel Licensing. Der Quellcode ist auf GitHub verfügbar:
git clone https://github.com/babelfornet/external-encrypted-code-console-example.gitWeil in der Angabe der Funktion source gesetzt ist, internal aber nicht, schreibt Babel den
verschlüsselten Rumpf in premium.eil, statt ihn einzubetten:
[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)Das Projekt kopiert premium.eil mit einem kleinen MSBuild-Ziel AfterTargets="Build" aus dem
Zwischenordner des Builds in die Ausgabe. So kann die Datei bereitgestellt oder bewusst
zurückgehalten werden, um die Funktion getrennt zu verkaufen.
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 runsMehr zum .eil-Mechanismus finden Sie unter Externe Codedateien
im Handbuch zur Codeverschlüsselung.