AnySTICK Die Dokumentation - AnySTICK - USB
Transcription
AnySTICK Die Dokumentation - AnySTICK - USB
AnySTICK Der preiswerte Dongle-Ersatz Die Dokumentation Inhaltsverzeichnis Allgemein....................................................................................... 2 Systemvoraussetzungen ................................................................ 3 Sicherheit ...................................................................................... 4 Szenarien....................................................................................... 5 Online .......................................................................................... 5 Offline .......................................................................................... 5 In dieser Reihenfolge werden Lizenzinformationen gesucht.................. 5 Konditionen ................................................................................... 7 Preise ........................................................................................... 7 Lieferbedingungen.......................................................................... 7 Zahlungsbedingungen..................................................................... 7 Widerrufsrecht............................................................................... 8 Developer Pack .............................................................................. 9 Lieferumfang ................................................................................. 9 Der Lizenz-Manager ..................................................................... 10 Das AnySTICK-Tool ...................................................................... 12 Integration in Ihre Anwendung ................................................... 13 Nutzung als .NET Assembly ........................................................... 13 Nutzung als COM (ActiveX)-Objekt ................................................. 14 Troubleshooting ........................................................................... 16 FAQ – Häufige Fragen .................................................................. 17 Über uns ...................................................................................... 19 Allgemein AnySTICK ist eine Lösung für Softwarehersteller, die Ihre Produkte mit einem günstigen komfortablen hardwarebasierten Lizenzschutz versehen möchten. Mit AnySTICK lässt sich jeder USB-Stick als Dongle (und weiterhin 100% als Datenträger) verwenden. Die Lizenzinformationen werden dabei nicht auf dem Stick gespeichert, sondern in einer Online-Lizenzdatenbank, die von der AnySTICK-DLL bei jedem Aufruf abgefragt wird. Dabei werden über das Internet ausschließlich verschlüsselte Informationen übertragen, alle Inhalte der Lizenzdatenbank liegen anonymisiert und verschlüsselt vor, und die Übertragung erfolgt zusätzlich über eine SSL-gesicherte Verbindung. Auch eine Offline-Lösung ist implementiert. Sie als SW-Entwickler bekommen mit dem Lizenzverwaltungsprogramm ein einfach zu bedienendes Tool, in dem Sie Ihre Produktlizenzen USBSticks zuordnen können. Jeder USB-Stick auf der Welt hat in der Regel eine eindeutige HardwareKennung und kann von AnySTICK als Dongle verwendet werden, ganz ohne etwas darauf zu speichern. Dazu installieren Sie als SW-Hersteller zusammen mit Ihrer zu schützenden Anwendung einfach die AnySTICK-DLL und rufen zur Lizenzabfrage eine darin enthaltene Funktion auf. Die Zuordnung Ihrer Produktlizenzen zu den USB-Sticks erfolgt in einer Online-Lizenzdatenbank und auf Wunsch zusätzlich in einer OfflineLizenzdatei. Das Developer Pack enthält den Lizenzmanager, der Sie als SW-Hersteller Ihre Lizenzen ganz einfach verwalten lässt. Auf den Zielcomputern muss nur der USB-Stick erkannt werden, weitere Treiber sind nicht erforderlich. USB-Sticks, die in der Lizenzdatenbank als Dongle registriert sind, können weiterhin uneingeschränkt als Datenträger genutzt werden. Datenträgerbezeichnung, Partitionen und Inhalt des Sticks sind für die Eigenschaft als Lizenzträger ohne Bedeutung. AnySTICK legt auch keine Daten auf dem Stick ab, sondern nutzt in der Hardware fest eingebrannte Parameter zur Identifizierung des Sticks. Mehrere SW-Hersteller können so völlig unabhängig voneinander denselben Stick als Dongle nutzen. Lizenzen können über den Lizenzmanager kostenfrei von Stick zu Stick übertragen werden. Beim Kunden bereits vorhandene Sticks können genutzt werden, was die Kosten noch weiter reduziert. Systemvoraussetzungen Alle Komponenten des AnySTICK-Systems setzen das Betriebssystem Microsoft Windows sowie das .NET Framework 2.0 voraus. Für Windows 2000 wurde das AnySTICK-System nicht mehr getestet. Zu nutzende USB-Sticks müssen auf den Zielsystemen fehlerfrei als Datenträger erkannt werden. Der Lizenzmanager setzt zum Betrieb eine bestehende Online-Verbindung voraus. Die AnySTICK-DLL kann von .NET-Programmiersprachen aus als .NETAssembly eingebunden werden, sowie von anderen Programmiersprachen aus als COM (ActiveX)-Objekt genutzt werden. Auch bei Nutzung als ActiveX-Objekt muss auf den Zielrechnern das .NET Framework 2.0 vorhanden sein. Sicherheit Online-Lizenzabfrage und -speicherung erfolgt über eine SSL-gesicherte Verbindung, zusätzlich werden grundsätzlich nur chiffrierte Daten übertragen. Alle Inhalte der Lizenzdatenbank liegen außerdem nur anonymisiert und verschlüsselt vor. Für jeden SW-Hersteller, der über seine Developer ID identifiziert wird, wird automatisch ein etwas anderer Verschlüsselungsalgorithmus benutzt. Nur mit dem im Developer Pack enthaltenen Master-Stick und einem von uns vergebenen Passwort lässt sich das Lizenzverwaltungsprogramm nutzen. Über einen MD5-HASH (Fingerabdruck) kann die Echtheit der AnySTICKDLL von Ihrer Anwendung aus verifiziert werden. Auf eine genauere Beschreibung der verwendeten Verschlüsselungsmethoden wird hier aus Sicherheitsgründen verzichtet. Bitte haben Sie Verständnis dafür, dass wir hierzu auch keine Anfragen beantworten. Nur soviel sei gesagt: Die Verschlüsselung entspricht dem aktuellen Stand der Technik. Auf das Schließen von Sicherheitslücken wurde während der Konzeption und Entwicklung des AnySTICK-Systems besonderer Wert gelegt. Was Sie selber für die Sicherheit tun können: Bewahren Sie Ihren Master-Stick und das Developer Passwort sicher und getrennt auf. Informieren Sie uns sofort, wenn Ihnen eins davon oder beides abhanden gekommen ist. Ziehen Sie Ihren Master-Stick ab, nachdem Sie den Lizenzmanager beendet haben. Implementieren Sie die AnySTICK-DLL wie in den mitgelieferten Quellcodebeispielen, insbesondere verifizieren Sie die Echtheit der DLL per MD5-Hash, bevor Sie Funktionen daraus aufrufen. Führen Sie mehrere Aufrufe mit unterschiedlichem Salt durch und prüfen Sie, ob die Rückgabewerte der DLL mit den erwarteten Rückgabewerten übereinstimmen. Führen Sie DLL-Aufrufe nicht nur beim Start Ihrer Anwendung durch, sondern auch zwischendurch, um sicherzugehen, dass der Stick noch angeschlossen ist. Teilen Sie möglichst keinem Außenstehenden Ihre Developer ID oder Ihre Produktstrings mit. Möchte ein Kunde einen vorhandenen USB-Stick als Dongle nutzen, akzeptieren Sie keine USB-Stick-Kennungen, die am Ende nicht nach einer individuellen Seriennummer aussehen (z.B. 000000). Es könnte sich dabei um Hardware handeln, die entgegen den USBSpezifikationen keine individuelle Seriennummer eingebrannt hat. Alle Besitzer eines Sticks dieses Modells könnten dann Ihre Anwendung benutzen. Szenarien Online AnySTICK funktioniert am einfachsten und sichersten, wenn die Zielcomputer regelmäßigen Onlinezugriff auf das Internet haben. AnySTICK ruft in diesem Fall regelmäßig neue Lizenzinformationen aus der Lizenzdatenbank ab und puffert diese verschlüsselt auf den Zielcomputern, um Offline-Zeiten zu überbrücken. Sie als SW-Entwickler halten mit dem Lizenzverwaltungsprogramm nur die Online-Lizenzdatenbank auf dem aktuellen Stand, der Rest passiert automatisch. Sie können einzelnen Kunden so auch Lizenzen wieder aberkennen (bei Zahlungsausfällen, Trial-Versionen, Mietmodellen). Offline AnySTICK funktioniert auch in Offline-Umgebungen, also bei Rechnern, die nie Internetzugang erhalten, noch nicht einmal beim Erststart der geschützten Anwendung. In diesem Fall können Sie als SW-Entwickler Ihrer Distribution USB-Sticks mit bekannter Kennung und eine dazu passende verschlüsselte Lizenzdatei beilegen. Zur Aktualisierung Ihrer Lizenzinformationen aktualisieren Sie selber die Lizenzdatei auf den Zielcomputern (z.B. im Zuge eines Updates). Über Ihr Lizenzverwaltungsprogramm können Sie jederzeit Ihre Lizenzdatenbank als verschlüsselte Lizenzdatei speichern. Sobald die DLL trotzdem einmal eine Online-Verbindung zur Lizenzdatenbank herstellen kann, werden die aktuellen Lizenzinformationen heruntergeladen, in der Registry gepuffert und zukünftig genutzt, auch wenn die Online-Verbindung nicht mehr besteht. Nachteil: Sollte Ihr Kunde allerdings nie online gehen, können sie ihm die einmal per Lizenzdatei erteilte Nutzungslizenz nie wieder entziehen. Bedenken Sie dies, bevor Sie sich dazu entschließen, generell die Lizenzdatei mit zu distributieren. In dieser Reihenfolge werden Lizenzinformationen gesucht Die AnySTICK-DLL versucht beim Aufruf der Funktion CheckLicense() zunächt einmal, eine sichere Online-Verbindung zum Lizenzserver aufzubauen. Gelingt dies, werden die relevanten Informationen von dort verschlüsselt heruntergeladen (und gleich in der Registry gepuffert). Gelingt die Online-Verbindung nicht, wird nach gepufferten Informationen in der Registry gesucht. Sind dort welche vorhanden, werden diese benutzt. Sind auch keine Lizenzinformationen in der Registry vorhanden, wird das Vorhandensein einer Lizenzdatei geprüft und die Informationen daraus gelesen. Ist auch keine Lizenzdatei vorhanden, wird von der DLL eine nicht vorhandene Lizenz (Leerstring) zurückgegeben. Wurden auf einem der 3 oben beschriebenen Wege Lizenzinformationen gefunden, werden diese nun entschlüsselt und alle angeschlossenen USBSticks daraufhin überprüft, ob einem von ihnen die angefragte Lizenz zugeordnet werden konnte. Wurde keine Lizenzzuordnung gefunden, wird von der DLL ein Leerstring zurückgegeben. Wurde eine Lizenzzuordnung gefunden, wird die in der DLL enthaltene Verschlüsselungsengine angeworfen, und in Abhängigkeit von übergebener Developer-ID, Produktstring und Salt ein verschlüsselter Lizenzstring zurückgegeben. Konditionen Sie wissen aus eigener Erfahrung, was Dongle der etablierten Anbieter im Einkauf kosten? Ab jetzt genügen USB-Sticks der untersten Preisklasse, egal welche Kapazität. Selbst beim Kunden bereits vorhandene USB-Sticks beliebigen Fabrikates können als Dongle genutzt werden und bleiben als vollwertiger Datenträger erhalten, denn AnySTICK speichert nichts darauf. Für wenige Euro kann man sich übrigens schon bei vielen Firmen individuell bedruckte USB-Sticks fertigen lassen und so seine eigenen Dongles produzieren. AnySTICK erhebt einen fixen einmaligen Betrag pro Neueintrag in die Lizenzdatenbank. Einmal vorhandene Einträge können später komplett umgenutzt werden (für andere Produkte oder andere USB-Sticks) Preise (zzgl. 19% USt.) Developer Pack (inkl. Master-Stick, Developer-Passwort und den ersten 10 Lizenzen): € 99,00 Jede weitere Lizenz einmalig: € 5,00 Ersatz-Master-Stick inkl. Sperrung des alten Sticks: € 49,00 Developer-Passwort neu ausstellen & per Post zusenden: € 25,00 Lieferbedingungen Developer Pack & Ersatz-Master-Stick werden als Großbrief per Einschreiben geschickt. Das Developer-Passwort kommt separat als Brief per Einschreiben. Die Lieferung innerhalb Deutschlands ist kostenfrei. Für Lieferung ins Ausland berechnen wir € 10,00. Lieferungen in EU-Länder außerhalb Deutschlands an Empfänger mit gültiger USt.-ID werden ohne Berechnung der Umsatzsteuer ausgeführt, ebenso Lieferungen ins Nicht-EU-Ausland (nur an Firmen). Zahlungsbedingungen Nach Bestellung des Developer Packs wird von uns eine VorkasseRechnung erstellt & per Email zugesandt. Nach Zahlungseingang werden das Developer Pack & das DeveloperPasswort separat versendet. Anschließend werden einmal monatlich die im Lizenzmanager neu erstellten Lizenzen erfasst und in Rechnung gestellt. Der Rechnungsversand erfolgt als PDF-Dokument per Email. Die Zahlungsfrist beträgt 10 Tage ab Rechnungsdatum. Widerrufsrecht Es handelt sich um individuell angefertigte Produkte ausschließlich für Gewerbetreibende und Freiberufler. Daher ist ein Widerrufsrecht ausgeschlossen. Der Kaufvertrag kommt erst mit Bezahlung der Vorkasse-Rechnung für das Developer Pack zustande. Developer Pack Lieferumfang Nach Eingang Ihrer Bestellung auf der AnySTICK-Webseite teilen wir Ihnen bereits eine Developer ID zu, die Sie der Rechnung entnehmen können. Nach Eingang der Vorauskasse-Zahlung für das Developer Pack legen wir Sie als Developer in der Lizenzdatenbank an, schalten Ihren Master-Stick frei und erstellen Ihnen Ihr Developer-Passwort. Auf den Master Stick (8GB USB-Stick) kopieren wir folgende Daten: Den AnySTICK-Lizenzmanager zum Anlegen und Verwalten von Lizenzen für Ihre Produkte & Zuordnung zu einzelnen USB-StickKennungen Das AnySTICK-Tool zur Ermittlung von USB-Stick-Kennungen (zur Weitergabe an Ihre Kunden, die eigene USB-Sticks als Dongle verwenden möchten) Die AnySTICK-DLL (zum Ausliefern zusammen mit Ihren zu schützenden Anwendungen) Ein Beispielprojekt zur Einbindung der DLL als Assembly unter .NET (Beispiel in VB.NET, Visual Studio 10) Ein Beispielprojekt zur Einbindung der DLL als COM (ActiveX)-Objekt (Beispiel in VB6) Diese Dokumentation als PDF-Dokument Den Developer Stick bekommen Sie als Großbrief per Einschreiben mit der Briefpost. Das Developer-Passwort bekommen Sie aus Sicherheitsgründen separat per Einschreiben. Wie geht es direkt nach der Bestellung auf unserer Webseite weiter? Sie bekommen in den nächsten Minuten eine automatisierte Eingangsbestätigung Ihrer Bestellung per Email. Falls Sie keine Email bekommen, haben Sie evtl. Ihre Email-Adresse nicht korrekt eingegeben. Schauen Sie auch in Ihren SPAM-Ordner. Nach Bearbeitung durch einen unserer Mitarbeiter bekommen Sie Ihre Rechnung als PDF-Dokument per Email zugeschickt. Nach Zahlungseingang erfolgen dann alle weiteren Schritte wie oben auf dieser Seite beschrieben, u.a. der Versand von Master-Stick und Developer-Passwort per Post. Bleibt der Zahlungseingang aus, kommt kein Kaufvertrag zustande. Der Lizenz-Manager Nach Start des Lizenzmanagers prüft dieser den angeschlossenen MasterStick, stellt eine sichere Verbindung zur Online-Lizenzdatenbank her und lädt die relevanten Informationen herunter, decodiert sie, und füllt damit die Lizenztabelle. In obigem Beispiel hat der Developer, der durch den Master Stick identifiziert wird, bereits 3 Lizenzen angelegt. Per Definition ist eine Lizenz eine Zuordnung von einem Dongle zu einem Produkt und entspricht einer Zeile in der obigen Tabelle. Der Endkunde Max Mustermann besitzt also den USB-Stick mit der Kennung, die auf '476' endet. Diesem Stick ist eine Lizenz für das Produkt A und eine Lizenz für das Produkt B Version 3.0 zugeordnet. Die Kundin Marion Musterfrau besitzt den USB-Stick, dessen Kennung auf '1EF' endet. Diesem Stick ist eine Lizenz für Produkt B Version 3.0 zugeordnet. Aus dem freien Text in der Spalte 'für Kunde' ist ersichtlich, dass die Zuordnung nur 30 Tage gelten soll. Danach könnte der Developer die Zuordnung wieder aufheben, indem er den Inhalt der Spalte 'Dongle' oder 'Produkt' ändert. Dadurch kann er die freigewordene Lizenz für einen ganz anderen Kunden, einen anderen Stick und ein anderes Produkt nutzen. Die ersten 10 Lizenzen (Zeilen in obiger Tabelle) sind im Developer Pack bereits enthalten. Sobald mehr als 10 Zeilen angelegt wurden, und die Änderungen hochgeladen wurden, werden die zusätzlichen Zeilen in der nächsten Monatsrechnung erfasst und gem. Preisliste berechnet. Die Buttons 'Neue Lizenz anlegen' sowie 'markierte Lizenz bearbeiten' sollten sich selbst erklären. Durch Klick auf den Button 'Änderungen hochladen' werden alle Änderungen in die Online-Lizenzdatenbank hochgeladen. Hierbei müssen Sie Ihr Developer Passwort eingeben. Dabei können Sie auch wählen, ob es für diese Sitzung oder generell verschlüsselt auf dem PC gespeichert werden soll. Nach Hochladen der Änderungen können Sie auf Wunsch auch eine Lizenzdatei speichern (in einen beliebigen Ordner, Dateinamen bitte unverändert lassen). Diese ist nur für den Fall gedacht, wenn AnySTICK bei Ihren Endkunden in Offline-Umgebungen funktionieren soll. Dazu muss die Lizenzdatei im selben Ordner liegen wie die zu schützende Anwendungs-exe. Außerdem finden Sie im Lizenzmanager noch Funktionen zum Auslesen der Kennungen von USB-Sticks, zum Anzeigen des MD5-Hash-Wertes der benutzten DLL sowie zum Anzeigen der verschiedenen Rückgabewerte der DLL, je nach übergebenem Produktstring und Salt. Durch Klicken auf das Fragezeichen neben vielen Buttons erhalten Sie einen Hilfetext dazu angezeigt. Das AnySTICK-Tool Dieses Tool können Sie Ihren Kunden zur Verfügung stellen, die einen vorhandenen USB-Stick als Dongle benutzen möchten. Damit können Ihre Kunden den Stick identifizieren und seine Kennung in der Zwischenablage speichern, um ihn Ihnen z.B. Per Email zuzusenden. Sie erstellen dann im Lizenzmanager nur noch eine neue Zeile, tragen dort die Kennung und das zu lizensierende Produkt ein, laden die Änderung per Knopfdruck hoch, und ab diesem Zeitpunkt kann Ihr Kunde Ihre Anwendung mit seinem Wunschdongle nutzen. Das Tool besteht nur aus einer einzigen exe-Datei. Ein Vorhandensein der AnySTICK-DLL ist nicht notwendig. Sie als Developer können das AnySTICK-Tool natürlich auch selbst benutzen, haben die selbe Funktionalität aber auch im hinter dem Button 'USB-Stick identifizieren'. Integration in Ihre Anwendung Nutzung als .NET Assembly Da die AnySTICK-DLL ein .NET-Assembly ist, ist die Einbindung unter.NET sehr einfach. Die DLL wird einfach ins selbe Verzeichnis wie Ihre zu schützende Anwendungs-exe oder in den Globalen Assembly Cache installiert. Hier der relevante Teil aus dem Beispielprojekt: 'Bitte fügen Sie in den Projekteigenschaften einen Verweis auf eine AnySTICK-DLL ein. 'Die DLL nutzt das .NET Framework 2.0. Dieses ist in Betriebssystems. 'Auf Windows XP muss es von Ihrem Setup, sofern noch AnySTICK funktioniert. 'Ab Windows 8 ist Framework 4.0 und höher enthalten, integriert. Deswegen muss auch hier Version 2.0 ggf. 'Wenn Ihr Setup das nicht übernimmt, macht Windows 8 (>50MB Download) Windows Vista und Windows 7 bereits Teil des nicht vorhanden, installiert werden, damit leider ist darin das Framework 2.0 nicht mehr nachinstalliert werden. das beim ersten Start der Anwendung von alleine Imports System.Reflection Public Class frmAnySTICK_Demo Private Sub btnLizenzPruefen_Click(sender As System.Object, e As System.EventArgs) Handles btnLizenzPruefen.Click Dim MyDeveloperID As Integer = 123456 'durch Ihre ID ersetzen Dim ProductString As String = "App123" 'Durch den Namen der zu schützenden Anwendung ersetzen, den Sie auch im Lizenzmanager verwendet haben Dim Salt As Integer = 69 'beliebige Ganzzahl zwischen 0 und 100; hiermit wird der Rückgabewert verschlüsselt 'AnySTICK-Assembly laden Dim AssemblyAnySTICK As Assembly = Assembly.Load("AnySTICK") 'Eine Instanz der LicenseReader-Klasse erstellen Dim AnySTICKLicenseReader = AssemblyAnySTICK.CreateInstance("AnySTICK.LicenseReader") 'Feststellen, von wo das Assembly geladen wurde (GAC oder lokal (empfohlen)) Dim AssemblyFileName As String = AssemblyAnySTICK.Location 'Überprüfen, on es sich wirklich um die Original-AnySTICK-DLL handelt If GetHashAnySTICKDLL(AssemblyFileName) <> "xxxxxxxxxxxxxxxxxxxxxxxxxxx" Then MsgBox("Die Integritätsprüfung der Softwareschutzkomponente ist leider fehlgeschlagen.") Exit Sub End If 'Die eigentliche Lizenzüberprüfung Dim Lizenzstring As String = AnySTICKLicenseReader.CheckLicense(MyDeveloperID, ProductString, Salt) If Lizenzstring = "" Then 'Wenn hier ein Leerstring zurückgegeben wird, ist am Computer kein USB-Stick angeschlossen, dem eine Lizenz für das geprüfte Produkt zugeordnet wurde. MsgBox("Es ist kein USB-Stick angeschlossen, dem eine Lizenz für die Anwendung " & ProductString & " zugeordnet werden konnte.") Exit Sub Else 'Nur sie wissen, welche Rückgabewerte Sie bei verschiedenen Salts erwarten und können diese verifizieren. MsgBox("Lizenz vorhanden. Um Angreifern die Arbeit zu erschweren, wird für jede ProductString-Salt-Kombination ein anderer Wert zurückgegeben. In diesem Fall: " & Lizenzstring) End If End Sub Nutzung als COM (ActiveX)-Objekt Die Nutzung der AnySTICK-DLL als ActiveX-Objekt erfordert etwas Aufmerksamkeit bei der Installation auf dem Kundenrechner, die Verwendung im Quelltext Ihrer Anwendungen ist dann aber wieder recht überschaubar. Hier der relevante Teil aus dem Beispielprojekt: 'Bitte fügen Sie unter 'Projekt/Verweise einen Verweis auf die AnySTICK.tlb ein. 'Lesen Sie bitte auch die folgenden Hinweise. Option Explicit 'Hinweis: Die AnyStick-DLL ist eine .NET-DLL. 'Sie muss im selben Verzeichnis wie die zu schützende exe (oder die Projektdatei auf Ihrem Entwicklungsrechner) liegen. 'Damit sie über COM (ActiveX) angesprochen werden kann, muss sie mit regasm.exe registriert werden. 'Auf dem Entwicklungsrechner muss außerdem eine .tlb-Datei erstellt und registriert werden. Das geht ganz einfach über die Eingabeaufforderung. 'Auf dem Entwicklungsrechner muss man dazu die cmd.exe als Administrator ausführen, mittels cd in den Pfad gehen, wo regasm.exe und AnySTICK.dll liegen und eingeben: ' regasm.exe anystick.dll /codebase /tlb 'Als Verweis im VB-Projekt muss man anschließend die Datei 'AnySTICK.tlb' einbinden, auf Kundenrechnern ist die Datei nicht erforderlich. 'Auf den Rechnern der Endkunden muss das Setup nur die DLL ins selbe Verzeichnis wie die EXE Ihrer Anwendung installieren und dort mittels regasm.exe registrieren, 'sonst bekommt der Kunde den Fehler: 'Objekterstellung durch ActiveX-Komponente nicht möglich'. 'Die meisten modernen Installationsprogramme haben so eine Funktion an Bord, die müsste in etwa heißen: 'register .Net assembly for COM Interoperability' . 'Wenn nicht, muss man, nachdem man die regasm.exe und die anystick.dll installiert hat, mit AdminRechten folgenden Shell-Befehl zur Ausführung bringen: ' regasm.exe anystick.dll /codebase /silent 'Die DLL nutzt das .NET Framework 2.0. Dieses ist in Betriebssystems. 'Auf Windows XP muss es von Ihrem Setup, sofern noch AnySTICK funktioniert. 'Ab Windows 8 ist Framework 4.0 und höher enthalten, integriert. Deswegen muss auch hier Version 2.0 ggf. 'Wenn Ihr Setup das nicht übernimmt, macht Windows 8 (>50MB Download) Windows Vista und Windows 7 bereits Teil des nicht vorhanden, installiert werden, damit leider ist darin das Framework 2.0 nicht mehr nachinstalliert werden. das beim ersten Start der Anwendung von alleine 'Die Funktion 'CheckLicense()' sollte man zur Laufzeit öfter mal aufrufen, um zu sehen, ob der Dongle auch noch drin steckt. 'Umso mehr Aufrufe man mit unterschiedlichem Salt durchführt, umso schwerer haben es Hacker, die DLL nachzubauen 'Das Salt ist übrigens nicht Teil der Lizenzprüfung, nur der ProductString muss zum Dongle passen. Das Salt beeinflusst nur den Rückgabewert der DLL. 'Schutz vor nachgebauten DLLs bietet auch die Ermittlung des DateiHash und Vergleich mit dem OriginalDateihash (dazu das ModHash). 'Vor dem eigentlichen Aufruf von CheckLicense() sollte man also erstmal mit GetHashAnySTICKDLL() die Integrität der DLL überprüfen. 'Dazu muss die Datei 'advapi32.dll' auf dem Zielrechner vorhanden sein, entweder im Systemverzeichnis oder im selben Verzeichnis wie die exe. Sie braucht nicht registriert zu werden. Private Sub cmdLicense_Click() 'Eine Instanz der LicenseReader-Klasse erstellen Dim AnySTICKLicenseReader As New AnySTICK.LicenseReader 'Und das Interface deklarieren Dim AnyStickInterface As iAnySTICK Dim Dim Dim Dim MyDeveloperID As Long ProductString As String Salt As Integer Lizenzstring As String MyDeveloperID = 123456 'durch Ihre ID ersetzen ProductString = "App123" 'Durch den Namen der zu schützenden Anwendung ersetzen, den Sie auch im Lizenzmanager verwendet haben Salt = 69 'beliebige Ganzzahl zwischen 0 und 100; hiermit wird der Rückgabewert verschlüsselt 'Über das Interface können wir auf die freigegebene Funktion zugreifen Set AnyStickInterface = AnySTICKLicenseReader 'Überprüfen, on es sich wirklich um die Original-AnySTICK-DLL handelt If GetHashAnySTICKDLL() <> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" Then MsgBox ("Die Integritätsprüfung der Softwareschutzkomponente ist leider fehlgeschlagen.") Exit Sub End If 'Die eigentliche Lizenzüberprüfung Lizenzstring = AnyStickInterface.CheckLicense(MyDeveloperID, ProductString, Salt) If Lizenzstring = "" Then 'Wenn hier ein Leerstring zurückgegeben wird, ist am Computer kein USB-Stick angeschlossen, dem eine Lizenz für das geprüfte Produkt zugeordnet wurde. MsgBox ("Es ist kein USB-Stick angeschlossen, dem eine Lizenz für die Anwendung " & ProductString & " zugeordnet werden konnte.") Exit Sub Else 'Nur sie wissen, welche Rückgabewerte Sie bei verschiedenen Salts erwarten und können diese verifizieren. MsgBox ("Lizenz vorhanden. Um Angreifern die Arbeit zu erschweren, wird für jede ProductStringSalt-Kombination ein anderer Wert zurückgegeben. In diesem Fall: " & Lizenzstring) End If End Sub Troubleshooting Stellen Sie sicher, dass auf dem Zielcomputer das .NET Framework 2.0 vorhanden ist. Lässt sich dort das AnySTICK-Tool starten? Wenn nicht, ist das ein sicheres Zeichen dafür, dass das .NET Framework nicht vorhanden ist. Dann können auch die anderen Komponenten nicht funktionieren. Tip: Auf Ihrem Developer-Stick finden Sie das .NET 2.0 Setup-Programm, damit Sie es nicht erst von Microsoft herunterladen müssen. Versuchen Sie, die DLL über COM (ActiveX) anzusprechen und erhalten Sie oder einer Ihrer Kunden den 'Laufzeitfehler 429: Objekterstellung durch ActiveX-Komponente nicht möglich'? Dann wurde die AnySTICK-DLL noch nicht als COM-Objekt registriert (per Setup oder regasm.exe). Versuchen Sie, die DLL über COM (ActiveX) anzusprechen und erhalten Sie oder einer Ihrer Kunden den 'Run-Time-Error 2147024894:Automation Error'? Dann befindet sich die AnySTICK-DLL nicht im selben Ordner wie die zu schützende Anwendung. Schlägt regasm.exe fehl (Error RA0000)? Dann wurde die Eingabeaufforderung ohne Administratorrechte ausgeführt. Ab Windows Vista müssen Sie die Eingabeaufforderung (cmd.exe) mit Rechtsklick und 'Als Administrator ausführen' starten. FAQ – Häufige Fragen Q: Was passiert, wenn der Kunde den USB-Stick neu formatiert, umbenennt oder löscht? A: Die Eigenschaft als Dongle bleibt vollständig erhalten. Q: Was passiert, wenn mein Master-Stick kaputt geht/verloren geht/gestohlen wird? A: In dem Fall bekommen Sie einen neuen Master-Stick von uns. Die Lizenzdatenbank wird von uns gleichzeitig auf die neue ID das Master Sticks umgestellt und alle vorhandenen Lizenzen aktualisiert. Der alte Stick wird gesperrt und kann nicht mehr als Master-Stick verwendet werden. Wir berechnen hierfür einen geringen Betrag lt. Preisliste. Q: Muss die AnySTICK-DLL auf den Zielrechnern registriert werden? Wohin sollte sie installiert werden? A: Die DLL muss ins selben Verzeichnis wie Ihre .exe-Datei installiert werden, von der aus Sie auf die DLL zugreifen möchten. Sie muss nicht registriert werden, sofern Sie von .NET-Anwendungen darauf zugreifen möchten. Möchten Sie über ActiveX (COM) auf die DLL zugreifen, muss sie von Ihrem Setup oder per regasm.exe für COM Interoperability registriert werden. Q: Was passiert, wenn der AnySTICK-Lizenzserver mal nicht zu erreichen ist? A: Die Lizenzinformationen werden zwischen den Online-Zugriffen automatisch verschlüsselt auf den Zielcomputern bis zum nächsten Online-Zugriff gepuffert, so dass die Programme Ihrer Kunden weiterhin funktionieren. Die Lizenzverwaltung mit dem Lizenzmanager würde während dieser Zeit allerdings nicht funktionieren. Q: Kann ich einem Stick beim Kunden mehrere Lizenzen zuordnen? A: Ja. Einem Stick können beliebig viele Lizenzen zugeordnet werden. Q: Kann man wirklich jeden USB-Stick als AnySTICK-Dongle nutzen? A: Gemäß den USB-Spezifikationen (ab 1.0) soll jeder USB-Stick eine Herstellerkennung, Modellkennung sowie eine Seriennummer fest in seiner Hardware eingebrannt haben. AnySTICK liest diese Parameter aus und kombiniert sie zu einer Gesamtkennung. Es kann also jeder USB-Stick genutzt werden, der die USB-Spezifikationen erfüllt. Im Zweifelsfall lassen Sie sich mit dem AnySTICK-Tool die Kennungen von 2 baugleichen USBSticks anzeigen, die Sie als Dongle einsetzen möchten. Sind die Seriennummern (hinten in der Kennung) verschieden, sind die Sticks geeignet. Bisher sind uns noch keine ungeeigneten Sticks begegnet. Für Hinweise sind wir jederzeit dankbar. Q: Kann ich die Hardware (USB-Sticks) auch bei Ihnen beziehen? A: Nein. Wir sind ein Softwarehaus und handeln nicht mit Hardware. Wir können aber Tipps geben, wo es sehr günstige geeignete Sticks gibt. Q: Wie kann die AnySTICK-DLL eingebunden werden? Gibt es Beispielprojekte? A: Die AnySTICK-DLL ist ein .NET-Assembly, das auch als COM (ActiveX)Objekt nutzbar ist. Auf dem Developer-Stick liefern wir 2 Beispielprojekte zur Einbindung in ein VB.NET-Projekt und ein VB6-Projekt mit. In den Beispielprojekten ist auch Quelltext zur Ermittlung des Hash-Wertes der DLL vorhanden, den Sie in Ihren eigenen Anwendungen benutzen dürfen, um die Integrität der AnySTICK-DLL sicherzustellen. Über uns wird entwickelt und vertrieben von: mediapromote software engineering Ingenieurbüro für Softwareentwicklung Dipl.-Ing. Martin Pehlke Jägerpfad 35 D - 31789 Hameln [email protected]