Serial - Key

    • VB.NET

    Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von gugi-zone.net.

      Serial - Key

      Hi
      Heute zeig ich euch, wie man einen Serial Schutz für Programme macht:

      Als erstes erstellt ihr die Einstellung "Start" und setzt den Wert auf "true".
      Dann erstellt ihr eine Form mit a) einer Textbox b) einem Button c) zwei Pictureboxen.
      Zunächst ordnet ihr diese vier Elemente ungefähr in dieser Reihenfolge:

      Dann stellt ihr die Sichtbarkeit von beiden Pictureboxen auf false und deaktiviert den Button.
      Dann sucht euch ein Hackerl und ein X für die Kontrolle.
      Dann gibt es vier Arten für die Kontrolle:
      1.) es wird der Anfangs und Endbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then PictureBox1.Show() Button1.Show() PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      2.) es wird der Text kontrolliert

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text="hallo" Then PictureBox1.Show() Button1.Show() PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      3.) es wird der Anfangsbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text.StartsWith("a") Then PictureBox1.Show() Button1.Show() PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      4.) es wird der Endbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.Text.EndsWith("b") Then PictureBox1.Show() Button1.Show() PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      Dann brauchen wir das ganze für den Button:

      1.) es wird der Anfangs und Endbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then PictureBox1.Show() PictureBox2.Hide()My.settings.Start=false Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      2.) es wird der Text kontrolliert

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text="hallo" Then PictureBox1.Show() My.settings.Start=false PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      3.) es wird der Anfangsbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text.StartsWith("a") Then PictureBox1.Show() My.settings.Start=false PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      4.) es wird der Endbuchstabe kontrolliert

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text.EndsWith("b") Then PictureBox1.Show() My.settings.Start=false PictureBox2.Hide() Else : PictureBox2.Show() Button1.Hide() PictureBox1.Hide() End If

      My.Settings=false dient dazu, das wenn der Code richtig ist, diese Form nie wieder anzeigt.


      Das war´s. Ich hoffe, ich konnte euch helfen.

      lg Digot
      Whos Faster ALPHA: Bald....
      Bitte über Quellcode den Code nachtragen damit es lesbar ist

      Ich hab mir mal die Mühe gemacht

      1.1

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      2. If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then
      3. PictureBox1.Show()
      4. Button1.Show()
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      1.2

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      2. If TextBox1.Text="hallo" Then
      3. PictureBox1.Show()
      4. Button1.Show()
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      1.3

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      2. If TextBox1.Text.StartsWith("a") Then
      3. PictureBox1.Show()
      4. Button1.Show()
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      1.4

      VB.NET-Quellcode

      1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      2. If TextBox1.Text.EndsWith("b") Then
      3. PictureBox1.Show()
      4. Button1.Show()
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      2.1

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      2. If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then
      3. PictureBox1.Show()
      4. PictureBox2.Hide()My.settings.Start=false
      5. Else : PictureBox2.Show()
      6. Button1.Hide()
      7. PictureBox1.Hide()
      8. End If
      9. End Sub

      2.2

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      2. If TextBox1.Text="hallo" Then
      3. PictureBox1.Show()
      4. My.settings.Start=false
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      2.3

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      2. If TextBox1.Text.StartsWith("a") Then
      3. PictureBox1.Show()
      4. My.settings.Start=false
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub
      2.4

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      2. If TextBox1.Text.EndsWith("b") Then
      3. PictureBox1.Show()
      4. My.settings.Start=false
      5. PictureBox2.Hide()
      6. Else : PictureBox2.Show()
      7. Button1.Hide()
      8. PictureBox1.Hide()
      9. End If
      10. End Sub

      hab das End Sub hinzugefügt und den Abstand nach links korrigiert (nicht notwendig)

      evtl Verbesserung

      VB.NET-Quellcode

      1. Public Function CheckText(ByVal txt As String, ByVal setstart As Boolean) As Boolean
      2. Dim b As Boolean = TextBox1.Text = txt
      3. If b And setstart Then
      4. My.Settings.Start = False
      5. End If
      6. Return b
      7. End Function
      8. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      9. Dim b As Boolean = CheckText("hallo", False)
      10. Button1.Visible = b
      11. PictureBox1.Visible = b
      12. PictureBox2.Visible = Not (b)
      13. End Sub
      14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      15. If CheckText("hallo", True) Then
      16. ' was passiert dann ?
      17. End If
      18. End Sub
      Die Verbesserung verkürzt nur den geposteten Code


      nur es wird eine Fehlermeldung geben dass der Sub Textbox1_Textchanged öfters als einmal mit den gleichen Signaturen vorhanden ist
      wenn in Picturebox1 und Picturebox2 nur unterschiedliche Bilder sind und den Status angibt ob der Text korrekt ist sollte nur eine Picturebox verwendet werden und die Bilder dem Status entsprechen geladen werden (aus Datei oder Variable)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mangafreak1995“ ()

      naja, dass hat ja nicht sonderlich viel mit einem Serial Key zu tun, hinter einem Serial Key muss doch ein Algorithmus stecken...hier der einfachste dens wahrscheinlich gibt, nur zum veranschaulichen hab ich jetzt eigt. von der Caesar verschlüsselgung abgeguckt^^ ;)

      VB.NET-Quellcode

      1. Dim Charset As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
      2. Function CreateBlock(Start As Integer,offset As Integer)
      3. Dim oChar As Integer = Start
      4. Dim tmp As String = Chars(Start)
      5. For x As Integer = 0 To 3 ' Ein block 5 zeichen
      6. oChar = (oChar + Offset) Mod Charset.Length
      7. tmp &= Charset.Chars(oChar)
      8. Next
      9. Return tmp
      10. End Function
      11. Function CreateKey() As String
      12. Dim tmp As String = ""
      13. Dim rnd As New Random()
      14. For x As Integer = 0 To 4 ' 5 Blöcke
      15. Dim strt As Integer = Int(rnd.NextDouble() * Charset.Length)
      16. Dim offset As Integer = Int(rnd.NextDouble() * Charset.Length -1)
      17. tmp &= CreateBlock(strt,offset) & IIf(x < 4,"-","")
      18. Next
      19. Return tmp
      20. End Function
      21. Function CheckBlock(Block As String) As Boolean
      22. If Block.Length = 5 Then
      23. Dim offset As Integer = Charset.IndexOf(Block(1)) - Charset.IndexOf(Block(0))
      24. Dim oInt As Integer
      25. For x As Integer = 1 To 3
      26. Dim nOffset As Integer = Charset.IndexOf(Block(x))- Charset.IndexOf(Block(x+1))
      27. If nOffset <> offset Then
      28. Return True
      29. End If
      30. Next x
      31. Return True
      32. Else
      33. Return False
      34. End If
      35. End Function
      36. Function CheckKey(Key As String) As Boolean
      37. Dim splt() As String = Split(Key,"-")
      38. For x As Integer = 0 To splt.Length -1
      39. If CheckBlock(splt(x)) = False Then Return False
      40. Next
      41. Return True
      42. End Function


      habs nicht ausprobiert und bin mir deshalb auch nicht 100% sicher obs funzt...xD

      der Aufruf sollte eigt so gehen:

      VB.NET-Quellcode

      1. 'zum erzeugen eines Keys nach dem Algorithmus(natürlich ist Zufall dabei) und ausgabe in ner MsgBox
      2. MessageBox.Show(CreateKey())
      3. 'zum überprüfen eines Keys
      4. If CheckKey("A1234-B2145-CDGW-XDGA1-ABCDE") Then' der Key stimmt aufjedenfall nicht^^
      5. 'mach was wenns richtig ist...
      6. Else
      7. MessageBox.Show("",MsgBoxStyle.Criticial)
      8. End If


      Mfg jvbsl
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Zwar etwas älter her, aber...

      Quellcode

      1. Der Name "Chars" wurde nicht deklariert.


      Habe Visual Basic 2008!

      Wie beheb ich das?
      Meine neue Homepage: pkern.at
      Wetter bei mir zu Haus:
      du weißt schon, dass(bei meinem Code) nicht jeder ein Serial für ein Programm ist, sondern viel mehr ein Algorithmus für ein Programm(dies hier ist natürlich ein sehr einfacher, ich habe schon durchaus komplexere erstellt...), somit muss kein Serial im Programm gespeichert werden, sondern viel mehr der Algorithmus zum überprüfen(dieser sollte jedoch auch Obfuscated werden)...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Mach einfach mal ne Textbox rein und zwei Buttons.

      Button1: TextBox1.Text = CreateKey()
      Button2: If CheckKey(TextBox1.Text) = True Then
      MsgBox("okay")
      Else
      MsgBox("fail")

      End If


      So und jetzt lass dir einen Generieren und veränder den beliebig, lass nur immer 5 deine Zeichen und das Trennzeichen. Du bekommst ein okay. Weißt du was ich meine? Das Gerüst zum prüfen fehlt hier gewaltig xD
      also bitte, bei der Eingabe wirst du doch hoffentlich noch auf 5 zeichen pro Block kürzen und nur 5 Blöcke zulassen...also Gewaltig ist etwas ganz anderes...veränder nur einen der 5 Blöcke und es wird mit ziemlicher Sicherheit einen Fehler geben...
      außerdem war das nur ein dahingeschriebener Code aus dem Kopf, der SerialKey ist auch nicht wirklich zu empfehlen, das Beispiel ist mit Caesar Methode und wirklich nicht sehr schwer zu knacken, es ist zu empfehlen einen anderen Algorithmus dafür zu schreiben...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      die Abfrage steht sehr wohl in Verbindung mit dem Algorithmus...Check Key ruft CheckBlock auf und dort wird dieser geprüft, jedoch habe ich die Funktion nochmal angeguckt und korrigiert...(niemand kann von mir verlangen das auf anhieb und so aus dem Kopf 100% Korrekt zu machen...ich hab ja nicht den Thread eröffnet...)
      hier das ganze korrigiert:

      VB.NET-Quellcode

      1. Dim Charset As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
      2. Function CreateBlock(ByVal Start As Integer, ByVal offset As Integer) As String
      3. Dim oChar As Integer = Start
      4. Dim tmp As String = Charset(Start)
      5. For x As Integer = 0 To 3 ' Ein block 5 zeichen
      6. oChar = (oChar + offset) Mod Charset.Length
      7. tmp &= Charset.Chars(oChar)
      8. Next
      9. Return tmp
      10. End Function
      11. Function CreateKey() As String
      12. Dim tmp As String = ""
      13. Dim rnd As New Random()
      14. Me.Text = ""
      15. For x As Integer = 0 To 4 ' 5 Blöcke
      16. Dim strt As Integer = CInt(rnd.NextDouble() * Charset.Length)
      17. Dim offset As Integer = CInt(rnd.NextDouble() * (Charset.Length - 1) + 1)
      18. Me.Text &= offset & ";"
      19. tmp &= CStr(CreateBlock(strt, offset)) & CStr(IIf(x < 4, "-", ""))
      20. Next
      21. Return tmp
      22. End Function
      23. Function CheckBlock(ByVal Block As String) As Boolean
      24. If Block.Length = 5 Then
      25. Dim offset As Integer = Charset.IndexOf(Block(1)) - Charset.IndexOf(Block(0))
      26. If offset < 0 Then offset = Charset.Length - offset
      27. offset = offset Mod Charset.Length
      28. For x As Integer = 1 To 3
      29. Dim nOffset As Integer = Charset.IndexOf(Block(x + 1)) - Charset.IndexOf(Block(x))
      30. If nOffset < 0 Then nOffset = Charset.Length - nOffset
      31. nOffset = nOffset Mod Charset.Length
      32. If nOffset <> offset AndAlso Charset.Length - nOffset <> offset Then
      33. Return False
      34. End If
      35. Next x
      36. Return True
      37. Else
      38. Return False
      39. End If
      40. End Function
      41. Function CheckKey(ByVal Key As String) As Boolean
      42. Dim splt() As String = Split(Key, "-")
      43. For x As Integer = 0 To splt.Length - 1
      44. If CheckBlock(splt(x)) = False Then Return False
      45. Next
      46. Return True
      47. End Function
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---