Login-/Lizenzsystem

09/25/2012 19:54 Kraizy​#1
Abend,

hätte da mal eine eher grundlegende Frage zu einem Login-/Lizenzsystem.
Also, die HWID aus mehreren Informationen aus dem Computer (CPU, Grafikkarte, MAC, ...) auslesen und diese dann in meiner Datenbank zu speichern (inkl. Username & Passwort) ist ja nichts besonderes. Meine Frage ist eher, wie erstelle ich nun eine sichere Überprüfung?

Ich kann ja z.B. auch einen Hash aus Username+Passwort+HWID+Salt generieren lassen, diesen an eine php-Datei abschicken, welche mir wiederum eine verschlüsselte Antwort sendet, welche ich intern in meinem Programm wieder entschlüssele.

Das Problem ist aber, egal ob und wie ich das ganze verschlüssele, am Ende kommt es doch immer auf das selbe hinaus, eine If-Abfrage. Und diese kann man ja ohne Weiteres auch einfach überspringen, somit wäre das ganze Ver-/Entschlüsseln am Ende nutzlos.

Aber gibt es denn überhaupt andere Möglichkeiten, außer eine einfache Abfrage, ob das Endergebnis stimmt und die Lizenz somit gültig ist?

Hoffe auf ein paar Antworten..
09/25/2012 22:01 MrSm!th#2
Eben nicht nur alles an einem If hängen lassen.
Packer; Verzweigte Abfragen; mehrere Kontrollwerte, die später an völlig anderen Stellen nochmal abgefragt werden; diverse Anti-Debugging Tricks; falsche Fährten; Code verschlüsseln, sodass er mit der richtigen Antwort entschlüsselt werden kann; wichtigen Code oder Entschlüsselungs-Code vom Server senden lassen und nicht im Modul selbst aufbewaren; ...
09/25/2012 23:01 マルコ#3
Zu 100% sicher wirst du es nie schaffen. Schau dir an, wie tagtäglich teure Software gecrackt wird. Da sitzen Profiteams dran, um das abzusichern, und trotzdem...

Am Ende fälschen sie ihre HWID, indem sie die Funktion detouren, die sie erstellt. Und dann ist dein Tool auch wieder freigeschaltet.

Ich denke, du solltest dir daher auch stark überlegen, wie du Reversen und Debuggen verhindern kannst, bzw. erschweren^^
Und dann natürlich Zugriffe von außen auf dein Programm.
09/25/2012 23:07 Kraizy​#4
Dass ich keinen 100%igen Schutz haben werde ist mir durchaus klar, ich suche lediglich Methoden, um es einigen Leuten schwerer zu machen. Auch bin ich mir ziemlich sicher, dass ich keinen "Profischutz", welcher mehrere hundert/tausend Euro kostet bzw wert ist, nötig habe, denn solche Leute werden sich sowieso nicht für meine Tools interessieren.
09/25/2012 23:14 MrSm!th#5
Quote:
Zu 100% sicher wirst du es nie schaffen. Schau dir an, wie tagtäglich teure Software gecrackt wird. Da sitzen Profiteams dran, um das abzusichern, und trotzdem...
Doch, indem die Software vollständig online läuft, aber das ist für viele Dinge nicht praktikabel.
09/26/2012 00:10 Dr. Coxxy#6
Quote:
Originally Posted by MrSm!th View Post
Doch, indem die Software vollständig online läuft, aber das ist für viele Dinge nicht praktikabel.
theoretisch können die cracker ins rechenzentrum einbrechen und den server einstecken ;)

100% geht nicht, je mehr du allerdings auf einen online server verlegst und dich net allzudumm anstellst, desto sicherer wird es.

wie mrsmith schon gesagt hat, benutz viele verschiedene verteilte kontrollroutinen, bau auch nen bissel antidebug ein, benutz nen packer, dann wirds auf jedenfall schon ein ganz schöner aufwand es zu knacken.
09/26/2012 09:05 boxxiebabee#7
So, solltest du wirklich die Daten an ein .php Script senden, dann schau dir bitte mal folgendes "Tutorial" an -> [Only registered and activated users can see links. Click Here To Register...]

Besser wäre es aber einen Server zu haben, der mit der App kommuniziert.

Eine andere Möglichkeit wäre, eine Art Launcher zu machen. Der Hauptcode (das Programm selbst) wird vom Server geladen, natürlich ist der Code verschlüsselt. Der User gibt den Username und Passwort ein, und mit diesem Daten wird versucht den Code zu entschlüssen. Das ganze packst du in ein try / catch. Bei catch sind die Angaben von User natürlich falsch. Das ganze kannst du auch gerne mit der HWID kombinieren. Das ganze wird dann nach Erfolg über Codedom ausgeführt.
Somit kann das Hauptprogramm auch relativ leicht aktualisiert werden. Das ganze könntest du eventuell noch verfeinern indem du nur den gerade benötigten Programmteil lädst, und nicht gebrauchten wieder entlädst. Somit kann das ganze nurnoch über einen Bruteforce, zugriff auf die Datenbank, Memory Dump (mit valid Daten) geknackt werden.

Ob sich nun der ganze Aufwand lohnt ist wiederum eine ganz andere Frage ;)