Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Key-Generator für mein Programm?


bruce185 - Mi 11.07.07 16:46
Titel: Key-Generator für mein Programm?
Hallo,
ich habe mir einen Testversion geschrieben und nach eingabe des Key wird dieser Testversion zur Vollversion.
Jetzt möchte ich gerne, wenn man einen Namen im Edit1 eingibt, dass diese Generiert wird zu Zahlen, beispiel:
00000-00000-00000-00000-00000
und wenn ich bei der Testversion von mir den Namen und dieser Key eingebe, das diese dann erkennt.

Wie macht man sowas?

MfG


Arne K. - Mi 11.07.07 16:55

Früher steckte dahinter ein einfacher Algorithmus, der viele Werte zusammen zu einem Key rechnete.

Dann verwendete man eine Zeit lang am PC konstante Werte, die sich jedoch von PC zu PC unterscheiden konnten.

Heutzutage sind reine Passwortabfragen meist an eine Onlineaktivierung gebunden. Denn sie Firmen haben erkannt, dass jeder Algorithmus für solche Lizenzschlüssel früher oder später geknackt werden kann (was übrigens bei der Online-Aktivierung nicht anders ist).

Grundsätzlich gilt dabei das Prinzip "Security through Obscurity": http://de.wikipedia.org/wiki/Security_through_obscurity
Da ein Keyalgorithmus nur solange sicher ist, wie er nicht offiziell ist, wird dir auch kaum jemand eine direkte Implementierung sagen können. Die Frage ist eben, was du willst: SkriptKiddies hälst du mit einfachsten Algorithmen auf (es sei denn, die besorgen sich einen Keygen). "Echte" Cracker wirst du nie aufhalten.


Corpsman - Mi 11.07.07 17:08

Hi,

ich habe mal was gemacht das Tserial heist.

Das ist auf meiner HP unter Komponenten -> Serial

Da ich aber gerade meine HP auf so nem Dämlichen Pseudoserver zwischenlagern mus, weil der eigentliche Server grad ein Riesen problem hat kann ich dir nur leider keinen direkt Link senden. Must manuel über http://www.Corpsman.de.vu suchen ;)


F34r0fTh3D4rk - Mi 11.07.07 18:02

der hier sollte es sein ;)

http://mitglied.lycos.de/corpsman/index.php?doc=komponenten/serial

mfg


Corpsman - Mi 11.07.07 21:06

Genau das wollte ich vermeiden , der Link stimmt nämlich schon nicht mehr

http://corpsman.co.ohost.de/index.php?doc=komponenten/serial

ist der der Funktioniert


Nilan - Mi 11.07.07 21:27

Und, du kannst diese Nummern nicht knacken? oO

Entschuldigung eine Frage eines unwissenden Neugierigen :D
Gruß, Nilan ;)


Arne K. - Mi 11.07.07 21:36

Die Frage ist vor allem, wie diese Komponente das Konzept umsetzen soll?

Wie ruft man die Komponente auf? Im Sinne von:

Quelltext
1:
if(serial.isValid())                    

? Falls ja - Schenk es dir. Eine solche Abfrage kann ein Cracker in einer halben Sekunde noppen.

Meist wird Inline Assembler verwendet, der Teile des Programms erst zur Laufzeit anhand der Seriennummer entschlüsselt -> Ist die Nummer falsch, kommt Datenmüll raus, und das Programm stürtzt ab. Dazu kommen zahlreiche überall im Programm verstreute Aufrufe von Funktionen, die sicherstellen, dass nicht im Speicher rumgepfuscht wurde (Assertions) und die eben weitere Teile entschlüsseln, die der Angreifer alle ausfindig machen und noppen bzw. umgehen bzw. faken müsste.
Es ist keine triviale Sache, eine Seriennummer in sein Programm zu implementieren; ich wäre gespannt, wie diese Komponente das machen will? Ohne die Komponente direkt schlecht machen zu wollen - Ich wäre da sehr skeptisch.


Delete - Mi 11.07.07 22:34

Über Sinn und Unsinn eines Kopierschutzes:
http://www.michael-puff.de/Developer/Artikel/2007_07/2007_07_09_KopierschutzCracken.php


Arne K. - Mi 11.07.07 23:28

Ist doch genau das, was ich gesagt hatte? Oder beziehst du dich auf das Thema allgemein und nicht auf mich?

Eine detalierte Ausführung ist sonst auch noch: http://www.c-plusplus.de/forum/viewtopic-var-t-is-161865.html
Ein meiner Meinung nach sehr gelungener Artikel! Zwar in C++, aber wer C# versteht, wird auch damit klarkommen. Abgesehen davon, dass man bei Reverse Engineering ohnehin nicht um Assembler - und damit verbunden öfters auch C - herum kommt.


Corpsman - Do 12.07.07 08:35

@Nilan

Ich kann den schlüssel selbst auch nicht knacken, da die Erstellerformel ja recht Kompliziert in der exe gespeichert wird und ich sie ja nicht kenne.

Ich habe die Komponente genau unter dem Aspeckt das ich sie selbst nicht knacken könnte entworfen.


ABER, wie einige hier schon bemerkt haben ist das natürlich kein 100%iger schutz, darum geht es meiner Meinung nach auch gar nicht.

Wenn jemand wirklich an dein Programm Rann geht dann macht er es platt ob du willst oder nicht ( siehe Proffesionelle Software von firmen wie (EA ... )).

Mit Serial, ist der Kreis derer die das Können aber schon mal deutlich kleiner. Zudem kommt das du natürlich keinen Support gibts ohne das der User die Serial angeben mus. Was bedeutet das du dann zumindest das schwarze schaf lokalisieren kannst.

Und meine Kombo macht es nun Möglich diese Serial in 3 Zeilen Code zu implementieren => der Aufwand bleibt minimal und ihr tut mehr wie nichts.