alexss95
Goto Top

Sichere Lizenz-Schlüssel erstellen und überprüfen

Hallo!

Ich bastle gerade an einem Programm herum, welches über
eine Aktivierungs-Funktion verfügen soll, also, dass wenn man einen bestimmten
Schlüssel eingibt, z.B. "27XHR-6HJK2-7GQV1-LOE8I-XOP95" soll dieser in den My.Settings
gespeichert werden, und wenn das Programm startet aus den My.Settings ausgelesen und
überprüft werden soll.

b95ca44a789f3a0bf725f932841ab55d-aktivierung_mdas-browser

Ich habe etwas von einem Algorythmus gehört, mit dem man das machen kann.
Ist das damit möglich, und wenn ja, wie?

Danke schon mal im vorraus!

Gruß
Alexss95

Content-ID: 126646

Url: https://administrator.de/contentid/126646

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

St-Andreas
St-Andreas 07.10.2009 um 15:36:06 Uhr
Goto Top
Hallo,


der Algo-Rythmus face-smile ist wohl nicht so einfach und offensichtlich. Denn jeder der den Algo-Rythmus kennt kann ja dann auch einen Schlüssel erstellen, nicht wahr? Und damit wäre dann ja nicht mehr so sicher wie man es gerne hätte!

Aber es gibt jede Menge Tools und Möglichkeiten wie man seine eigene Software schützen kann. In aller Regel sind diese Möglichkeiten allerdings kostenpflichtig.
Alexss95
Alexss95 07.10.2009 um 15:39:53 Uhr
Goto Top
Aber es wird doch irgendwie möglich sein, so eine Aktivierung ohne
igendwelche Tools zu erstellen, oder nicht?

Es gibt doch genug Programme, die das auch haben (MS Office, TuneUp, usw.)

Gibt es denn keine möglichkleit?

Gruß
Alexander
maretz
maretz 07.10.2009 um 16:37:17 Uhr
Goto Top
Moin,

ganz ehrlich: Was bringt das? Wenn du das so simpel machst - dann kopiert man sich die My.Settings halt gleich mit oder packt den Key fröhlich munter auf irgendwelche Webseiten...

Hier würde ich das Konzept nochmal überlegen - und ob du ne andere Kopierschutz-Maßnahme nicht ggf. besser findest...
H41mSh1C0R
H41mSh1C0R 07.10.2009 um 16:57:19 Uhr
Goto Top
Was soll an so einer Aktivierung schwierig sein? Pick dir einen Algo aus dem WWW oder ausm Kopf und modifiziere Ihn. Danach packste das in deine Software und schreibst bei korrekter Eingabe dir das "registered" da hin wo du es haben willst.

Das das natürlich wenig "Schutz" bietet ist klar.
Alexss95
Alexss95 07.10.2009 um 17:26:04 Uhr
Goto Top
Also, danke erst mal, für eure Antworten!

Natürlich ist das keine gute Idee, aber machen das große Firmen
nicht auch so? Z.B. gibt es zu TuneUp doch hunderte Serials, die
auch noch funktionieren (also, ich habe das nicht selber getestet face-wink )

Ich habe das jetzt so gemacht:

Ich habe 5 Labels, die der Benutzer auch sehen kann, welche
bei dem Start des Programmes jeweils eine Zufallszahl bekommen.

Also z.B. :

Label1.Text = "27543"
Label2.Text = "74397"
usw.

Dann hat der Benutzer noch 5 TextBoxen, worin er bestimmte zahlen eingeben muss, welche sich durch eine Rechenaufgabe
mit den zuvor autom. generierten LAbel.Texts ergeben.

Z.B.:

(TextBox1 = s1, TextBox2 = s2, Label1 = L1, usw.; Die letzte TextBox (s5) ist
dann das ergebnis der Rechenaufabe)

If s5.Text = s2.Text + L3.Text * "647" + L1.Text * s1.Text + L4.Text * L5.Text - L2.Text + s3.Text - s4.Text Then  
                Form6.Show()
                Me.Close()
            Else
                s1.Text = ""  
                s2.Text = ""  
                s3.Text = ""  
                s4.Text = ""  
                s5.Text = ""  
                Randomize()

                Dim a, b, c, d, f As Integer
                a = Int(Rnd(12345) * 99999) + 1
                b = Int(Rnd(12345) * 99999) + 1
                c = Int(Rnd(12345) * 99999) + 1
                d = Int(Rnd(12345) * 99999) + 1
                f = Int(Rnd(12345) * 99999) + 1

                L1.Text = a
                L2.Text = b
                L3.Text = c
                L4.Text = d
                L5.Text = f
                MsgBox("Der eingegebene Telefon-Code ist fehlerhaft!" & Chr(13) & "Stellen Sie sicher, dass Sie den Code richtig eingegeben haben!", MsgBoxStyle.Exclamation, Title:="MDAS-Browser Aktivierung")  
            End If
        Else
            MsgBox("Der eingegebene Telefon-Code ist zu kurz!" & Chr(13) & "Bitte geben Sie den Code im richtigen Format ein.", MsgBoxStyle.Exclamation, Title:="MDAS-Browser Aktivierung")  
        End If

Der Code ist nicht ganz ausgereift, doch er funktioniert schon fast.

Ich habe auserdem noch eingebaut, dass wenn der Benutzer einen Falschen Schlüssel eingibt, neue Zahlen generiert werden.
9baa2e0d563f00981904ff5b333a9a35-key_mdas
Alexss95
mrtux
mrtux 08.10.2009 um 01:39:50 Uhr
Goto Top
Hi !

Also so wird das sicherlich nix.....Ausserdem solltest Du dir im Klaren darüber sein, dass es nix gibt was sich nicht irgendwie knacken lässt, wenn nur genügend (kriminelle) Energie reingesteckt wird.....Bist Du sicher ob sich der Aufwand überhaupt lohnt? Wenn deine Applikation z.B. nur von einer bestimmten Nutzergruppe verwendet wird, ist der Aufwand grösser als der Nutzen.

mrtux
H41mSh1C0R
H41mSh1C0R 08.10.2009 um 06:10:27 Uhr
Goto Top
Zitat von @mrtux:
Also so wird das sicherlich nix.....Ausserdem solltest Du dir im
Klaren darüber sein, dass es nix gibt was sich nicht irgendwie
knacken lässt, wenn nur genügend (kriminelle) Energie
reingesteckt wird.....

vor allem wenn die Masse der Leute mit Debuggern umgehen kann xD.

Da kann man mit ner Codeabfrage die ein Programm im Usermode bringt nicht viel Sicherheit generieren .

Anders schaut es da schon auf Hardware- und Kernelebene
aus. Aber auch wenn man nen Dongle + selbstgestricktem KMDF Treiber zur "authorization" benutzt, heißt das noch lange nicht das nicht auch mit genügend Zeit das geknackt wird. Alternativ kann auch jede Codeabfrage aus einem Programm weggepatched werden. Nur eine Frage der Zeit und des eigenen Könnens.

Zitat von @mrtux:^^
Bist Du sicher ob sich der Aufwand
überhaupt lohnt? Wenn deine Applikation z.B. nur von einer
bestimmten Nutzergruppe verwendet wird, ist der Aufwand grösser
als der Nutzen.

Das kommt dann noch dazu.
Alexss95
Alexss95 08.10.2009 um 08:49:27 Uhr
Goto Top
Ich will das Programm nicht verkaufen o.ä.
Es geht mir nur um den Spaß und darum, dass es
einigermaßen funktioniert!

Aber kann mein denn aus meinem Programm den
Code auslesen?
Gibt es dazu ein spezielles Programm?

Noch was: Wenn Ihr meine Methode so schlecht findet,
dann sagt mir doch bitte, wie ich das machen soll bzw. kann!

Gruß
Alexss95
St-Andreas
St-Andreas 08.10.2009 um 09:15:08 Uhr
Goto Top
Nun wie wäre es wenn Du einfach mit ganz grundlegenden Informationen wie hier anfängst.

Darauf aufbauend kannst Du Dir ja dann überlegen wie Du weiter vorgehen möchtest.
H41mSh1C0R
H41mSh1C0R 08.10.2009 um 09:22:05 Uhr
Goto Top
Also die einfachste Prüfung ist eine Prüfung anhand einer Prüfsumme.

nehmen wir mal das hexadezimalsystem

1 2 3 4 5 6 7 8 9 A B C D E F

nun nimmste nen Code von 5 Blöcken

23FED-18B2F-AADDE-12345-CF3EA

Jetzt kannste darüber z.B. als Prüfsumme die Quersumme bilden: 217 (wenn ich mich nicht vertippt hab )

Jetzt brauchste dir nur noch einen Generator basteln der die "alle" oder nur soviele kombinationen wie du brauchst ausrechnet die diese Quersumme haben und voala. Die Vergabe der einzelnen Schlüssel kann man dann noch an die Personendaten binden und ggf. an eine Onlineaktivierung
und schon ists durch.

Jetzt kannst du analog eine Prüfsumme und Zahlensystem deiner Wahl nehmen und den Generator dementsprechend anpassen und fertig bist du.

Zum Thema Knackbarkeit:

Mit jedem vernümpftigen Debugger kann man die Stellen finden wo die Abfrage drinnen ist und ggf. die Sprungmarken so ändern (mit einem Hexeditor) das die Abfrage garnicht kommt oder Step-by-Step die Berechnung z.B. der Prüfsumme rausfrickeln.

http://de.wikipedia.org/wiki/Debugger
Alexss95
Alexss95 08.10.2009 um 09:31:09 Uhr
Goto Top
Könntest du mir bitte noch einen Mini-Beispielcode geben?
H41mSh1C0R
H41mSh1C0R 09.10.2009 um 00:55:01 Uhr
Goto Top
NEIN, denn durch stupides C&P lernst du am wenigsten.

Des Weiteren nutzt jeder die Sprache die er selber mag.

Daher nimm dir ein Blatt Papier und zeichne dir die Grundlegenden Abläufe auf die notwendig sind.

In meinem Post steht alles drinnen was du brauchst, du musst dir nur klar werden was du suchst.

1. Such dir ein Zahlen/Zeichensystem aus, kann auch was selbst erdachtes sein, und berechne dir ein paar beispielserials
2. Such dir das Bilden deiner "Prüfsumme/Serialchecks" aus
3. implementiere das in der Sprache deiner Wahl
4. teste deine beispielserials
5. *freu*
Alexss95
Alexss95 09.10.2009 um 16:20:28 Uhr
Goto Top
Hey,

Ich bin kein fortgeschrittener, geschweige denn ein professioneller
VB-Anwender/Programmierer.

Ich möchte auch nicht die ganze Zeit wieder im i-net suchen, weil
ich das schon getan habe und nix dabei rausgekommen ist.

Deswegen habe ich hier im Forum nachgefragt!

Ich bitte dich einfach nocheinmal:

Könntest du mir BITTE einen Beispielcode zusammenbasteln?
Ich krig das nicht hin...

BITTE!!!

Gruß
Alexss95
H41mSh1C0R
H41mSh1C0R 09.10.2009 um 17:37:25 Uhr
Goto Top
Zitat von @Alexss95:
Ich bin kein fortgeschrittener, geschweige denn ein professioneller VB-Anwender/Programmierer.

Ich auch nicht!!! Ich habe mal mit Hilfe von Google + 10min ein Kleines Beispiel unten zusammengebastelt. Meine VBA Zeiten sind schon böse lange her, aber mit Tante Google ging das schon.

Zitat von @Alexss95:
Ich möchte auch nicht die ganze Zeit wieder im i-net suchen,
weil ich das schon getan habe und nix dabei rausgekommen ist.

Also eine Maßgeschneiderte Lösung wirst du NIE im Netz finden. Zerlege die Probleme in Teilprobleme und versuche die zu lösen.

Also Zahlensystem, Eingabe, Prüfverfahren, Resultat.

Option Explicit

Private Sub SerialCheck_Click()
    Dim Text1, Text2, Text3, Text4, Text5 As Integer
    Dim Zwischensumme, i As Integer
    Dim Quersumme As Integer
    Dim Resultat As Integer
    
    Resultat = 20
   
    Zwischensumme = TextBox1.Value + TextBox2.Value + TextBox3.Value + TextBox4.Value + TextBox5.Value
    
    MsgBox (Zwischensumme)
    
    For i = 1 To Len(Zwischensumme)
        Quersumme = Quersumme + Val(Mid(Zwischensumme, i, 1))
        Sheets("Tabelle1").Cells(i + 1, 2).Value = Quersumme  
    Next i
    
    MsgBox (Sheets("Tabelle1").Cells(6, 2).Value)  
        
    If Sheets("Tabelle1").Cells(6, 2).Value <= Resultat Then  
         MsgBox ("Der eingegebene Code ist richtig!")  
    Else
         MsgBox ("Der eingegebene Code ist falsch!")  
    End If
End Sub

Da ich immer noch nicht rausbekommen habe wie ich hier Bilder hochlade hier die URL:

http://s6.directupload.net/images/091009/cye83b59.png

Das sollte als Anstoss reichen.
Alexss95
Alexss95 09.10.2009 um 18:08:57 Uhr
Goto Top
Vielen, vielen Dank!!!

Du hast mir echt geholfen!!
Ich hätte das ohne dich wirklich nicht hinbekommen.

Ich teste das ganze sofort!

Danke nochmal,

Gruß
Alexss95