funktionsweise eines keygens

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

KeyGen bedeutet "Schlüssel Generator", also eine Software, die einen Schlüssel generiert. Somit ist die zweite Bezeichnung richtig.

Die erste Definition (Simulation eines Auth-Servers) würde ich auf jeden Fall als Crack bezeichnen, da das Ganze ja nichts mehr mit einer Schlüsselgenerierung zu tun hat.

Normalerweise guckt man sich durch Reverse Engineering (meist Disassemblieren) die Funktionsweise des Algorithmus an, der für die Überprüfung des Lizenzschlüssels zuständig ist, und leitet dann davon eine Funktion zum Generieren eines solchen ab.

Nehmen wir mal an, du findest durch Reversing heraus, dass eine Software einen numerischen, 5-Stelligen Code als Lizenzschlüssel erwartet, der im Bereich von 12345 und 54321 liegen muss, dann kannst du einfach ein Programm schreiben, welches Zufallszahlen im Bereich 12345 bis 54321 erzeugt, und dieses dann KeyGen nennen.

Findest du hingegen heraus, dass der Schlüsselalgorithmus uuuuunglaublich kompliziert ist, der Lizenzschlüssel am Ende aber nur an einen Server zur Überprüfung geschickt wird, könntest du einen lokalen Miniserver implementieren, der die Abfrage des Programms abfängt, und bei jedem nur erdenklichen Schlüssel ein "OK" zurück schickt. Das nennt man dann Crack.

Allerdings gibt es sehr viele verschiedene Möglichkeiten, eine Software zu cracken. Die meisten Cracks sind wohl keine Miniserver zur Schlüsselverifizierung, sondern einfach nur Programme, die in der zu crackenden Datei ein paar Bytes umschreiben, sodass die Lizenzschlüssel-Überprüfung ausgehebelt wird, und jeder beliebige Schlüssel als "valide" verkannt wird.

Die letzte Methode ist bei Weitem die einfachste, und ist für einen erfahrenen Reverser in unter einer Minute zu realisieren. Den Aufwand, das Ganze dann noch schön in eine GUI-Applikation zu gießen, schätze ich bei viel Liebe zum Detail auf ca. 30 Minuten bis 2 Stunden.

Fazit: Als KeyGen bezeichnet man eine Drittsoftware, die für eine kommerzielle Software einen gültigen Schlüssel erzeugt, sodass man diese dann uneingeschränkt benutzen kann. Dafür ist ein Ableiten des Schlüsselalgorithmus nötig.

Aber: Viele Softwarehersteller versehen ihre Produkte mit mehreren Schutzmechanismen gleichzeitig, sodass sowohl KeyGen, als auch Crack notwendig sind, um das Produkt nutzen zu können! Trotzdem ist KeyGen und Crack nicht das gleiche! :)


killerkappi 
Beitragsersteller
 05.04.2015, 08:52

danke für deine mühe wohl der erste text indem ich die funktionsweise gut verstehe

1

KeyGens funktionieren so ziemlich immer anders. Wenn die Authentifizierung über den Server läuft, muss logischerweise etwas dazwischen geschaltet werden. Server muss emuliert werden ( dazu reicht es den Traffic mitzuschneiden, allerdings muss dieser noch entschlüsselt werden ).In der Regel versucht man dies aber zu umgehen, da größerer Aufwand. 

Im Normalfall, sprich bei kleineren Apps, werden die Keys einfach berechnet. Durch Reverseengineering ( auf fast der niedrigsten Stufe ( ASM ) ) ist es möglich den Algorithmus zu finden und somit eigene Keys zu erstellen, die akzeptiert werden. 

Dann gibt es aber auch noch Codecaving ( eigenen ASM Code einschleusen ) in diesem Fall wird die Validierungsmethode überschrieben. Kam sehr oft bei Spielen vor. Da wird dann kein KeyGen ( in dem Sinne mitgegeben ), sondern es werden mehrere feste keys in den Prozess eingebettet, die akzeptiert werden.


TeeTier  03.04.2015, 13:06

Sehr gut! An Code Caves habe ich in meiner Antwort gar nicht gedacht! :)

Oftmals ist es aber wirklich so, dass man nur ein einziges Bit abändern muss, um einen Sprungbefehl so zu manipulieren, damit jeder Mögliche Key akzeptiert wird. (Ich finde, das klingt immer ein bisschen unglaublich ... nur EIN Bit ... muss man sich mal auf der Zunge zergehen lassen)

Aber ich denke, dass kann man dann nicht mehr KeyGen nennen. :)

0
killerkappi 
Beitragsersteller
 05.04.2015, 08:53

Danke viel mal ich verstehe nun einbisschen was davon. Mich hat das immer wunder genommen was hinter dem GUI so alles stecken kann nun weiss ichs in etwa

0

Hallo!

So ziemlich für alle Probleme, die ein Mensch mit Elektronik oder Software zu lösen versucht, gibt es mehrere Wege.

Ich weis nicht, inwieweit du dich mit Problemlösungen durch Software auskennst, aber je "höher" die Sprache, desto mehr Lösungen zur Lösung eines Problemes gibt es.

Dies ist mir wiedermal bei der Programmierung  der GUI von Android aufgefallen.

Aber auch wenn du "nur" in Java oder C/C++ usw. programmierst, wirst du für jedes Problem mehrere Lösungen finden.

Gruß

Ich glaube beide Methoden sind möglich, aber sehr schwierig.

Das ist nur ne Vermutung aber es kann doch auch verschiedene KeyGens geben? Oder?


killerkappi 
Beitragsersteller
 03.04.2015, 11:11

kann sein aber eben ich weiss es nicht.

0