Demoversion: Wie mache ich sie sicher?



  • Alles andere kann man mehr oder weniger leicht umgehen...

    Ich glaube, das dem Chef klarzumachen, ist für alle die beste Lösung.



  • Über's Web müsste das doch recht gut gehen. Der Kunde holt sich die Evaluation-Version (oder wie sowas heißt), bei jedem Start verbindet sich die Software mit dem Server und guckt, wie lange sie schon läuft. Dazu kannst du ja einen Hash über die Hardware-Komponenten plus Benutzername plus Computername oder so erstellen. Wenn du's geschickt machst, ist jeder PC bzw jede Software halbwegs eindeutig identifizierbar und da du auf dem Server den ersten Start der Software mitbekommst, kannst du den Start nach den 30 Tagen einfach verweigern.

    Anmerkungen:
    Der Benutzer braucht dringend und bei jedem Start des Programms Internet.
    Wenn der Benutzer neue Hardware-Komponenten einbaut, muss die Software das merken, also bei jedem Start neuen Hash berechnen und mit dem alten abgleichen, falls Änderung, die halt an den Server übertragen.



  • @Badestrand
    Das dürfte für einen Cracker kein Problem sein. Dann deaktiviert man einfach die Onlineabfrage.



  • Dann lagert man eben ein wenig Funktionalität, irgendwas triviales ohne dass es aber nicht geht, auf den Server aus.



  • Du kannst in der demoversion funktionalität auf den Server auslagern, dann kann zumindest die online abfrage nichtmehr umgangen werden.

    bleibt nurnoch das Grundproblem der nutzeridentifikation. Denn so ohne weiteres verhindern, dass sich jemand einfach nen neuen account holt, kann man so ohne weiteres nicht.

    //heute hab ichs aber. irgendwer ist immer schneller



  • Brauchst wohl noch nen Kaffee :p



  • Ist denn die Vollversion geschützt? Es hat m.E. nicht viel Sinn, die Demoversion kugelsicher zu machen, wenn sich jeder die Vollversion kopieren kann.
    Wenn das so ist, dann kannst du doch den Mechanismus der Vollversion auch für die Demoversion benutzen.



  • @rüdiger: Ja, aber das wäre dann schon ziemlich aufwändig, oder? Ob sich das lohnt, kommt evtl. auch drauf an, wie teuer die Software werden soll.

    Wieviel soll denn die Vollversion in etwa kosten? Und kann man von einem User wirklich erwarten, dass er bei jedem Start das Internet verfügbar haben soll und die Verbindung auch zulässt?

    Wie wäre es in der Demo sowas à la Total Commander einzubauen? Also beim Start den Nutzer ein klein wenig abnerven mit Zufallsabfrage (ein paar Buttons, der User muss zum Start auf einen klicken, der vorher zufällig bestimmt wird) oder eine Zeitverzögerung von 10 s oder so. Halt so, dass der Nutzer einen Anreiz hat, die Software doch zu kaufen, wenn er sie häufiger nutzt und effezient damit arbeiten will.



  • by the hammer



  • Es ist so, dass die Benutzer auf die wir abzielen in den seltensten Fällen
    auf den Arbeitsplätzen Internetverbindungen haben. Kaum zu glauben aber wahr...

    Welcher Ordner ist denn unter allen Windowsversionen grundsätzlich von jedem
    Anwender beschreibbar? Da würd eich dann eine entsprechende Datei verschlüsselt
    ablegen und den Wert hochzählen!

    Nur in welchem Pfad ist sowas machbar? 😕



  • Stell einfach alles unter die GPL, dann hat sich das Problem gelöst.



  • Einen Wert in einer Datei zu speichern ist doch auch relativ Wirkungslos. Sobald man weiß wo diese Datei ist (und das ist sicherlich sehr einfahc rauszukriegen) kann ja ein Shell-/Batchscript geschrieben werden, dass zunächst die Datei nach der Installation sichert und vor jedem Ausführen einfahc wieder auf den erstzustand zurücksetzt.



  • Hanny schrieb:

    Da würd eich dann eine entsprechende Datei verschlüsselt
    ablegen und den Wert hochzählen!

    Auch wenn du den Dateiinhalt verschlüsselt, was hält jemanden davon ab, anfangs von dieser Datei eine "Sicherheitskopie" zu machen und diese später wiederherzustellen, wenn es nahe an die 200 geht?

    edit: Hmja, eine halbe Minute zu spät 😉



  • Nanyuki schrieb:

    edit: Hmja, eine halbe Minute zu spät 😉

    Kaffee? Aber ich stimm dir zu!



  • Die Datei würde nicht im Installverzeichnis liegen und aus meiner Exe erzeugt werden.
    Der Durchschnittsanwender hat keine Chance die Datei zu finden, wenn ich sie
    irgendwo verstecke. Nur ist jetzt noch die Frage auf welche Verzeichnisse man
    immer Schreibzugriff hat (sowhl unter XP, Vista als auch Server2003/08





  • WM_COPYDATA kopiert beliebige Daten.



  • ich muss sagen, dass mir bei nicht vorhanden sein von interent auch nix einfällt und wenn mir nix einfällt, dann geht es auch nicht.



  • IMHO kann eine nicht geschützte(also ohne AsProtect und co) Exe von jedem Anfänger mit Tutorial von hinten bis vorne durchleuchtet werden (weiß ich aus versuchen mit eigenen programmen ). Und gegen Profis hilft so gut wie gar nichts sonst gäbe es ja auch im Internet nicht die ganzen crackseiten etc. Die einzige Chance die dir bleibt ist es es dem Angreifer so schwer wie möglich zu machen die relevanten Änderungen vorzunehmen. Dazu kannst du z.B. auf einen Exe-Protector zurückgreifen (gut=teuer selbstgemacht=schwierig=billig billigiminternet(falls es das gibt)=schlecht).
    Ich schlag dir einfach mal was vor mit denen du solchen leuten wenigstens nicht die Straße ebnest.

    1. Lagere keine Funktionen mit den namen wie "CheckLicense" oder "hasDemoEnded"in irgendwelche Dlls aus.
    2. Prüfe mehrmals im Programm die Gültigkeit der Lizenz bzw. des Datums
    3. Lege diese Informationen nicht in einer Variablen ab sondern in mehreren am besten mit dinamisch erstellten Speicheraddressen.

    Die einzig wirklich wirksame methode gegen unerlaubtes freischalten ist und bleibt die Funktionen gar nicht zur verfügung zu stellen aber das kommt bei dir ja leider nciht in Frage

    Soweit von mir 🙂
    Fencer



  • Noch als kleine Erweiterung zu den vorherigen vorschlägen:

    Eventuell Hardwarelösung über Dongle in USB/Parallelport Form, das kommt natürlich drauf an was das für Software ist wenn die Software weniger Wert ist als der Dongle dann bringt die Sache nichts ^^

    Dann gibts als weiteres noch die Möglichkeit gewisse Speicherbereiche manuell zu überwachen indem immer mal wieder eine Checksume des Speicherbereichs gebildet wird und überprüft wird ob dies wirklich so vorgesehen war von der Programmlogik. Dazu zählt zB überprüfen ob nicht zum Beispiel if(..) zB jeq anweisungen zu if(!..) jenq umgebaut wurden.

    Als weiteres kannst du noch überprüfen ob gewisse Debugger laufen oder das Programm von einem Dissasemblierer ausgeführt wird.

    Aber theoretisch kann alles umgangen werden die Frage ist ob ein Kunde wirklich die Kompetenz dazu besitzt.


Anmelden zum Antworten