Frage

Ich arbeite daran, eine voll funktionsfähige Testversion einer Software zu erstellen.Jetzt, da ich keine zeitlich begrenzte (wie 30-Tage-Testversion) oder funktionsbeschränkte Testversion möchte, wäre es schön, mit der Anzahl zu gehen, wie oft ein Benutzer die Software ausführen kann.

Es ist eine C # -basierte .NET-Anwendung und ich bemühe mich sehr, einen Weg zu finden, dies zu implementieren.Versuchte Registrierungsschlüssel, dateibasiertes Tracking usw., aber sie scheinen nicht sehr zuverlässig zu sein.

Würde mich sehr über Hilfe zu diesem Thema freuen.

Danke, Rohan

War es hilfreich?

Lösung

Die normalen zwei Möglichkeiten, wie ein Testzeitraum verfolgt wird, sind ein Registrierungsschlüssel und ein Webdienst:

  • Registrierungsschlüssel: Implementieren Sie eine Methode zum Beibehalten der Anzahl der Programmstarts in einem Schlüssel in der Windows-Registrierung, wahrscheinlich mit einer Art Verschleierung.Ein "gesalzenes" Verschlüsselungsschema, bei dem Sie ein Schema verschlüsseln, das Ihren Wert plus einen maschinenabhängigen Wert wie die MAC-Adresse der Netzwerkkarte enthält, würde wahrscheinlich am besten funktionieren;stellen Sie sicher, dass Ihr Code schwer zu dekompilieren ist, indem Sie etwas wie Dotfuscator verwenden.Es ist am besten, den Schlüssel mit dem Installationsprogramm an bestimmten Stellen zu platzieren, damit das Programm das Fehlen des Schlüssels einfach als Manipulationsversuch behandeln kann.

    Rufen Sie dann beim Start den Schlüssel ab, entschlüsseln Sie ihn und überprüfen Sie ihn.Wenn es Ihren Erwartungen entspricht, addieren Sie den Wert um 1, schreiben Sie ihn zurück in die Registrierung, und wenn der neue Wert größer als die Anzahl der zulässigen Starts ist, sperren Sie den Benutzer.Wenn der Registrierungsschlüssel jemals ein Wert ist, den Sie nicht erwarten (was bedeutet, dass er manipuliert wurde), einschließlich der Tatsache, dass er überhaupt nicht vorhanden ist, sperren Sie den Benutzer einfach aus.

    Der Vorteil dieses Ansatzes besteht darin, dass er eine sehr hohe Sicherheit bietet, ohne das Internet zu benötigen.Der Nachteil ist, dass sich "maschinenabhängige" Details aus legitimen Gründen ändern können, und in diesem Fall wird Ihr Benutzer gesperrt, bevor er alle seine Starts verwendet hat, was Benutzer frustrieren kann.Außerdem ist Ihre Implementierung für das Salzen und Verschlüsseln auf dem Computer des Benutzers vorhanden;ein ausgeklügelter Hacker hat Möglichkeiten, Ihr Programm zu untersuchen, selbst wenn Sie den Code verschleiern, und kann Ihre Implementierung entdecken und nachahmen, um den Zähler "zurückzusetzen".Es braucht nur einen Mann, der das kann, und es wird eine einfache Warez-App geben, mit der jeder andere es tun kann.

  • Webdienst:Implementieren Sie einen WCF-Dienst auf einem Server, den Sie steuern.Sperren Sie es fest, sodass der einzige Weg von außerhalb Ihres LANS über den WCF-Port genau so führt, wie es WCF erwartet.Implementieren Sie nun einen Client in Ihr Programm und dessen Installationsprogramm.Bei der Installation ruft das Installationsprogramm eine Servicemethode auf, die besagt, dass die Software auf einem Computer mit einer bestimmten MAC-Adresse oder Hardware-ID installiert wird.Wenn Sie diesen eindeutigen Computer nicht in Ihrer Datenbank aufgeführt haben, fügen Sie ihn hinzu;sonst tu nichts.Rufen Sie dann beim Programmstart den Webdienst von Ihrem Programm aus auf, geben Sie dieselben Informationen ein, und der Webdienst aktualisiert die Anzahl der Starts und gibt einen Wert zurück, der dem Client mitteilt, ob er gestartet werden darf.

    Der Vorteil eines Webdienstes ist, dass es sehr schwierig sein wird, sich auf eine Weise zu bewegen, die über Warez in Massen vermarktet werden kann;der Hauptweg, ein solches System anzugreifen, besteht darin, den Lizenzserver zu hacken oder einen "Mann in der Mitte" einzusetzen, der die Anforderung Ihres Programms für den Webdienst an einen Computer umleiten kann, den er kontrolliert.Der Nachteil ist, dass Änderungen an der Hardware-ID eines Computers immer noch zu vorzeitigen Aussperrungen führen können oder, schlimmer noch, eine Problemumgehung ermöglichen, indem der Angreifer einfach eine neue MAC-Adresse oder Hardware-ID fälschen kann, die Sie noch nie zuvor gesehen haben, und Ihre Software neu installieren, wodurch der Benutzer eine neue Reihe von Starts auf dem "neuen" Computer erhält.Es gibt auch Möglichkeiten, dies zu verhindern, aber jede Ebene der Verschleierung und Anti-Hack-Überprüfung, die Sie hinzufügen, ist eine weitere Komplexitätsebene.

Was auch immer Sie tun, denken Sie an die 80/20-Regel;80% Ihrer Benutzer werden durch die grundlegendsten Maßnahmen zur Sicherung des Testprozesses ehrlich gehalten.20% Ihrer Benutzer werden einen Weg finden, dies zu umgehen.Von diesen 20% werden 80% durch jede zusätzliche Maßnahme, die Sie eingeführt haben, verhindert.Dieser Prozess ist rekursiv;der Punkt ist, dass irgendjemand irgendwo irgendwelche Maßnahmen umgehen wird, die Sie eingeführt haben, aber wenn die Mathematik stimmt, werden 96% Ihrer Benutzer einfach nachgeben und Sie für den vollen Zugriff bezahlen, wenn sie mit einem Umschalt-verschlüsselten Registrierungsschlüssel und verschleiertem Programmcode konfrontiert werden.Sie können dies für 99,2% der Benutzer erreichen, indem Sie etwas anderes hinzufügen, z. B. den verschleierten Schlüssel mit etwas Maschinenspezifischem salzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top