Produkt-Key |
|
Moin
Ich hab mal ne Frage zu der ganzen Sache mit den Produkt-Keys.
Kann mir mal jemand erklären, wie diese Abfragen in Programmen aufgebaut sind? Wenn ich ein Prog habe, kommt meistens irgendwann bei der Installation die Aufforderung nen Key einzugeben, ich geb den ein und die Installation geht weiter!
Und genau diesen Punkt würd ich gern mal erklärt haben, was das für ein System ist, wie es aufgebaut ist, in welcher Datei bzw wo das gespeichert oder geprüft wird!
Hab auch schon gegoogelt, aber da war nichts sinnvolles dabei, wäre über Links zu diesem Thema echt dankbar!
cu
buzzodeluxe
__________________ Würden Architekten Häuser bauen, wie Programmierer ihre Programme, dann könnte ein Specht die ganze Zivilisation zerstören.
|
|
03.09.2003 20:10 |
|
|
|
hi...
also grundsätzlich gibt es erst mal eine ganze Menge unterschiedlicher Möglichkeiten so eine Passwort-Schutz/Serialnummer-Abfrage zu implementieren. Es gibt da keinen Standard.
Hier mal Methoden die ich gesehen habe:
a) Serial-/Passwort ist 1 zu eins in den Quelltext eincompiliert. Irgendwann kommt dann mal ne Abfrage ala "if (strcmp(password, "S3CR3t")"
b) Serial-/Passwort wird "verschlüsselt" in den Quelltext eincompiliert. Während der Laufzeit wird das Passwort dann entschlüsselt und mit der Eingabe verglichen.
c) Serial-/Passwort setzt sich aus einem Algorithmus zusammen. Die Eingabe von dir wird dann gegen den Algorithmus gecheckt. Beispiel wäre, wenn die Quersumme der Zahlen durch 7 teilbar ist, oder ein Modulo-Verfahren wie beim Personalausweis (Beschreibung und Tool siehe http://www.thc.org/download.php?t=r&d=THC-PassID.zip).
d) Tausend andere Möglichkeiten gibts da noch
Speichern der Serial in der Registry, in einer INI-Datei usw. usw. usw.
Ok wie hackt man das ganze denn nun? Angenommen, du hast dir eine Software inkl. Lizenz erworben, die Seriennummer verloren, und den Hersteller gibt es nicht mehr. Dann könntest du folgendermassen vorgehen:
Egal wie die Abfrage implementiert ist, irgendwann wird
in dem Programm eine Entscheidung getroffen, ob der Key richtig war (dann mache weiter im Programm) oder nicht (dann beende das Programm). Würde man das Programm disassemblen, dann würde man irgendwann eine IF-Abfrage in Assembler finden (JE = Jump if equal oder JNE = Jump if Not Equal).
Natürlich wirst du in einem grösseren Programm eine ganze Menge solcher IF-Abfragen haben. Daher ist es keine Lösung, den ganzen source durchzusuchen.
Der Profi macht das dann so: Installiere dir einen Debugger wie, z.B. Softice von Numega.
Dann startest du das Programm, für das du die Serial herausbekommen möchtest. FÜhre das Programme so lange aus, bis du zu dem Eingabefeld kommst.
Dann rufst du per Tastenkombination den Debugger auf und schaust dir an, wo du dich gerade im COde befindest. Du kannst den Code dann im Debugger schrittweise weiter ausführen. Wenn du dann die Stelle gefunden hast, an der die Entscheidung getroffen wurde, dann musst du den IF-Code an dieser stelle manipulieren (gerade JE durch JNE vertauschen). Damit das dauerhaft geht, müsstest du dann ein patch schreiben.
Ok, das ganze ist leider noch etwas komplizierter, da z.B. die Coder INT3 in den Code reincomplilieren, um den Debugger durcheinander zu bringen.
Wenn du mehr Info dazu suchst, suche in astalavista.box.sk nach Softice und Cracking tutorial usw.
Fang am Besten mal mit VB Programmen an (<=4.0). Da gibts den Dodi-Decompiler, und damit kann man schon ein paar ältere VB-Programme cracken.
Okidoki...
Doc Holiday
|
|
04.09.2003 14:21 |
|
|
|
moin
@Holiday
Jetzt hab ich erstmal ein paar Infos, die mich weiterbringen sollten, mal gucken wie weit ich komme bis ich nochmal was nachfragen muß....
thx
cu
buzzodeluxe
__________________ Würden Architekten Häuser bauen, wie Programmierer ihre Programme, dann könnte ein Specht die ganze Zivilisation zerstören.
|
|
08.09.2003 17:42 |
|
|
|