Softwareschutz "Zeitbegrenzung"

  • VB.NET
  • .NET (FX) 4.0

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Manawyrm.

    Vergiss es, Lizenzsysteme mit .NET sind nicht möglich.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Sie sind möglich ;) - Nur nicht besonders schwer zu umgehen. Du kannst dennoch davon ausgehen das 75% aller User ein Lizenzsystem in .NET nicht umgehen können. Nur weil wir Ahnung von Dekompilierung haben muss es nicht der 0815 User haben.
    Nun ja, möglich schon, aber es ist halt dann eher für den Hobbyfreundeskreis. Was ich damit meinte, ist halt ein richtiges Lizenzsystem, das komplett sicher ist und sich für große Programme eignet.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    jedes andere lizenzsystem in jeder anderen sprache ist auch nicht sicher. Das software gecracked wird kann man nur einigermaßen umschiffen indem man viel auf den eigenen server auslagert, das bietet sich aber nur selten an. folglich, einfach nen lizenzsystem einbauen und entsprechend nutzen, mehr kann man eh nicht machen.
    @tolio Na ja, etwas sicherer schon, da man es nicht direkt dekompilieren kann, wie bei .NET, aber sonst gebe ich Dir recht, dass man das über nen Server regeln sollte.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    TVX schrieb:

    Frag doch das datum von na Webseite ab.
    Da braucht man ja nichtmal cracken oder dekompilieren. Einfach die Website herausfinden (z.B. Wireshark) und diese Website via hosts-Datei auf was anderes lenken. Zur Not auch auf localhost und mit XAMPP eine eigene Website machen.

    Ich denke, es sollte schaffbar sein, dass Ganze so hinzukriegen, dass man cracken MUSS. Dadurch können es vllt nur 15% der User schaffen.


    Mfg.
    SAR

    zoranmaric schrieb:

    Hallo
    Hat jemand eine Idee... :|
    :)

    Hallo,
    so richtig schützen wirst du es nie können. Es ist immer ein Wettlauf wie beim Hase und Igel.
    Eine sehr einfache Möglichkeit und für den "Normal-User" ausreichend ist, das du dir die Aktuelle Zeit wann dein Programm beendet wurde irgendwo speicherst.
    Registry... irgendwelchen Pfaden. am besten Mehfach :)
    Beim Start deines Programmes wird die Aktuelle Urzeit genommen und mit deinem gespeichertem vergleichen. Liegt die aktuelle Zeit VOR der gespeicherten,
    hat der User die Zeit zurückgestellt und du startest dein Programm nicht. Und braucht z.B. erst wieder einen Key oder so per Telefon/Mail um es wieder freizuschalten.

    Beim Beenden speicherst du dann wieder die Urzeit für den Nächsten Start. Auch hier drauf achten, das die Zeit nicht während dein Programm lief zurückgestellt wurde.
    Im einfachsten fall lässt du beim Starten deines Programmes einen Timer mitlaufen und errechnest dir anhand, wie lange das Programm gelaufen ist, wie die Momentane Zeit ist.
    Dann kann dein User die Zeit zurückstellen wie er will :)

    Eine andere und bessere Möglichkeit ist es, die Zeit von dort zu holen, die keiner Ändern kann, z.B. auf deinem Webserver.
    Dies setzt aber voraus das dein User Online sein muss zumindest hin und wieder.
    @ zoranmaric Sorge dafür, dass der User sich registrieren muss, z.B. durch das Verteilen einer Demo-Software, die erst nach Registrierung bei Dir voll aufgerüstet wird. Da hast Du keinen Ärber mit Daten und Fdristen und der User kann Deine Demo-Software beliebig lange nutzen.
    Z.B. kein Drucken, kein Speichern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    SAR-71 schrieb:

    TVX schrieb:

    Frag doch das datum von na Webseite ab.
    Da braucht man ja nichtmal cracken oder dekompilieren. Einfach die Website herausfinden (z.B. Wireshark) und diese Website via hosts-Datei auf was anderes lenken. Zur Not auch auf localhost und mit XAMPP eine eigene Website machen.

    Die Webseite auf eine andere(eigene) umzulenken, und dann dort eine Falsche Uhrzeit vorzugaukeln wird so einfach nicht gehen, wenn man sich "etwas" Mühe gibt.

    Eine Möglichkeit einer relativ sicheren Vorgehensweise
    a) das Programm ermittelt eine ZufallsZahl z.B. 0815, und verschlüsselt diese und sendet sie an die "Zeitlieferwebseite"
    b) die Zeitlieferwebseite entschlüsselt.. diese Nachricht, nimmt die aktuelle Uhrzeit z.b. 18.00 UND die gesendete Zufallszahl 0815, verschlüsselt das ganze wieder und gibt das Ergebnis zurück.
    c) das Programm entschlüsselt die zurückgegebenen Daten, und schaut, ob als RandomNummer die 0815 zurückgekommen ist. (die es selbst ermittelt hatte)
    c) stimmt die Randomnummer, dann nimmt er die Zeit, da er weiß das diese von der eigenen Webseite kommt. stimmt die Randomnummer nicht, war es eine Fremde .. also Programm beenden.

    Auf diese Weise kannst du recht einfach ermitteln, ob die Antwort wirklich von deiner Seite kommt. Und durch die ZufallsZahl nützt es auch nichts, wenn jemand die Antwort abfängt und dann bei der nächsten
    Abfrage einfach nochmal sendet.

    :) Ich hoffe ich habe es nicht zu kompliziert erklärt.

    RoulettePilot schrieb:

    Die Webseite auf eine andere(eigene) umzulenken, und dann dort eine Falsche Uhrzeit vorzugaukeln wird so einfach nicht gehen, wenn man sich "etwas" Mühe gibt.
    Ist ziemlich einfach.
    Mit dem Editor öffnest du die Datei "C:\Windows\System32\drivers\etc\hosts (<- Standard)" und fügst eine einzige Zeile hinzu bestehend aus der Website und der eigenen IP ("127.0.0.1" oder "localhost").
    Jetzt brauchst du nur noch einen Webserver installieren und starten (e.g. XAMPP) <- Fertig. Das schafft man in wenigen Minuten.
    Und so einfach geht das.

    Was deine "sichere" Möglichkeit angeht: Als .NET-Programmierer MUSST du davon ausgehen, dass dein Source-Code bekannt ist. (.NET-Sprachen bzw. IL-Code ist sehr leicht zu dekompelieren)
    Also kann man die Entschlüsselungsroutine bei dem eigenen Webserver ohne Probleme nachbauen und die Uhrzeit beliebig modifizieren.

    Und das immernoch ohne zu cracken - obwohl es mit deiner Methode schon ein kleines bisschen aufwendiger ist.


    Mfg.
    SAR

    SAR-71 schrieb:


    ... Was deine "sichere" Möglichkeit angeht: Als .NET-Programmierer MUSST du davon ausgehen, dass dein Source-Code bekannt ist.

    Ich schrieb nicht "sicher" sondern "relativ sicher"
    und ..
    "...vorzugaukeln wird so einfach nicht gehen, wenn man sich "etwas" Mühe gibt."

    Crackbar ist alles. Es ist eine Frage zwischen Aufwand und Nutzen.
    Es geht um den "normalen" User.

    Und wenn sich einer die Mühe gibt und
    a) den Code artig durchsucht und die entsprechenden Verschlüsseungsroutinen samt Passwort usw. findet
    b) eine Webseite erstellt, welche dazu die entsprechenden Antworten liefert

    ... dann bitteschön hat er es auch verdient und soll für seine Mühe belohnt werden. :D
    Nun -- es gäbe Zeitsignierungsserver, da kann man einen Zeitstempel abrufen, welcher zu einer festen Zeit erstellt und signiert wurde. Den Public Key von so einem Server könnte man einkompilieren und die Abfrage via HTTPS machen. Das würde schonmal helfen, aber im Zweifelsfall lese ich mir halt mal deinen IL-Code durch und patche ihn...