Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kommen Buchstaben in eine Seriennummer? (https://www.delphipraxis.net/144832-wie-kommen-buchstaben-eine-seriennummer.html)

TheMiller 17. Dez 2009 18:51


Wie kommen Buchstaben in eine Seriennummer?
 
Hallo,

ich bin gerade dabei, einen Seriennummernschutz mit aktivierung zu programmieren. Ich habe jetzt mein erstes Projekt, was ich nicht einfach so für lau rausgeben will.

Nun würde ich gerne eine Seriennummer (Prinzip soweit klar und schon umgesetzt) mit Buchstaben und Zahlen erstellen. Und jetzt frage ich mich, wie die Buchstaben in der Seriennummer "errechnet", ausgewählt oder eingefügt werden. Also nach welchem Schema?

Wird zB eine Zahl errechnet, zB. 6 und dies ist dann der (26-6).Buchstabe des Alphabeten-Arrays oder so?

Wäre um ein paar Vorschläge dankbar!

Danke!

Progman 17. Dez 2009 19:15

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Vorschlag: Ein Array of Char ['0'..'9', 'A'..'Z'].
Dann immer zufällig ein Zeichen aus diesem Array "ziehen" und in deine Seriennummer einfügen.
Man kann dieses Array auch "durcheinanderwirbeln".
Ich habe das mal so gemacht, dass ich eine "Quersumme" über die Seriennummer errechnet habe, die aus der Summe von (Ord(Char) + Position im Array) bestand. Dann hab ich das 1000 mal durchlaufen lassen um die am meisten vorkommende "Quersumme" zu ermitteln.
Die habe ich dann zu Grunde gelegt, um aus einer Million "Ziehungen" nur die zu speichern, die diese "Quersumme" haben. So wurde die Prüfung auf Echtheit der Seriennummer garantiert. Es ergaben sich dann meist mehrere Tausend solcher Keys.
Wenn man das Quell-Array mit den Ursprungszeichen immer anders "durcheinanderbringt" hat man mit diesem Verfahren sehr viele Möglichkeiten, immer neue Keys (für z.B. andere Anwendungen) zu erstellen.

Micha88 17. Dez 2009 20:07

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Kleiner Tipp:

Wenn du einen solchen Schutz realisieren willst, würde ich dein "Vorhaben" NICHT hier öffentlich schreiben.
Ebenso würde ich keine Tipps aus dem Forum 1zu1 übernehmen.

Dann kannst du genau so gut einen Verschiebealgorythmus nehmen, der bringt genau soviel, und viel ist in diesem Sinne "nix".

TheMiller 17. Dez 2009 20:11

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Also, ich habe jetzt einen Algorithmus mit mathematischen Spielereien entwickelt. Die entstandene Serien-NUMMER überlagere ich dann quasi per Zufall mit Buchstaben aus einen indexierten Array.

Zum Beispiel:

Code:
1 = A, K, U
2 = B, L, V
3 = C, M, W
4 = ........
So kann ich dann, bevor ich die Seriennummer auf Korrektheit prüfe, die Buchstaben intern wieder in Zahlen umwandeln. Sollte doch so reichen, oder?

Blöd ist nur, dass die Buchstaben dann keinen eigentlichen Sinn haben, oder?

@MichaelLinden: Keiner kennt mein Programm ;) Außerdem verrate ich ja die mathematischen Berechnungen nicht.

-=Breeze=- 17. Dez 2009 20:23

Re: Wie kommen Buchstaben in eine Seriennummer?
 
BtW:
Dir bringt der komplizierteste Algorithmus nichts, wenn du nachher schreibst
Delphi-Quellcode:
if check(serial)=True then Starte_Programm;
Denn das kann jeder überspringen, der sich ein wenig auskennt ;)

Micha88 17. Dez 2009 20:33

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Zitat:

Denn das kann jeder überspringen, der sich ein wenig auskennt Wink
Stichwort: u.a. disassembler

- Umgehe direkte Vergleiche: if key then starte..;
- Umgehe Variablennamen wie: key, serial, seriennummer, generatedkey , usw
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben
statt ABC:

Progman 17. Dez 2009 20:40

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Zitat:

Zitat von MichaelLinden
Zitat:

Denn das kann jeder überspringen, der sich ein wenig auskennt Wink
Stichwort: u.a. disassembler

...
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben
statt ABC:

ähm....da macht aber der Compiler trotzdem "ABC" draus :)
Am Besten ist es, den Key gar nicht im Programm zu haben, sondern nach der Eingabe mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.

Namenloser 17. Dez 2009 20:42

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Zitat:

Zitat von MichaelLinden
- Versuche den Key wenn schon in Form von char(65) + char(66) + char(67); (ABC) zu schreiben

Das habe ich neulich in einem anderen Thread auch vorgeschlagen, es hat sich aber als wirkungslos herausgestellt, weil der Compiler dieses Konstrukt schon vor dem Compilieren evaluiert, sodass der Text am ende doch wieder im Klartext in der Exe steht. Da muss man shcon etwas kreativer werden.

Der einzige wirkliche Schutz wäre eh, die komplette Datei zu verschlüsseln und erst stückchenweise bei der Ausführung zu entschlüsseln. Auch das ließe sich zwar theoretisch umgehen, allerdings macht es afaik auch Skype so, das bisher immer noch als ungeknackt gilt. So ein Aufwand ist aber eigentlich immer unnötig.

Ich sehe schon wie wir hier wieder in die übliche Debatte zum Sinn und Unsinn von Kopierschutz hineinschlittern... :wink:

TheMiller 17. Dez 2009 20:51

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Vielen Dank für die Tipps...

Das mit dem Disassembler ist mir klar - kenne mich damit auch ein bissl aus. Nur ich weis nicht so recht, wie ich es sonst umgehen kann.

Die Aussage

Zitat:

Am Besten ist es, den Key gar nicht im Programm zu haben, sondern nach der Eingabe mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.
habe ich nicht ganz verstanden...
Wenn ich doch Seriennummern nach einem Algorithmus erstelle, kann ich sie doch auch wieder zurückrechnen. Jeder User soll seine persönliche Seriennummer bekommen. Wieso sollte ich jede persönliche Seriennummer im Programm speichern?

Micha88 18. Dez 2009 10:27

Re: Wie kommen Buchstaben in eine Seriennummer?
 
Zitat:

mit einer speziellen Berechnung (die auch recht kompliziert sein kann) auf Echtheit zu prüfen.
So macht es Office 2007 bei Eingabe des Keys/Serials z.B.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz