Tutorial Creación de Crackmes En VB6
Bueno ya que en el foro no e visto algún tutoríal de cómo hacer crackmes o si hay no lo he visto y es que son escasos aquí les enseñare mi nobles y pocos conocimientos de cómo crear nuestros crackmes en visual Basic 6 para que a si a ver si se animan mas a crear crackmes para el foro.
Descripción de crackme = Es un simple programa que simula una protección que al romperla te mostrara el mensaje de felicitaciones o cualquier mensaje que allá puesto el creador.
Nota: ustedes pueden crear sus propios mensajes o felicitaciones
Definición de Keygenme= A diferencia del crackme que 
solo pide una contraseña el keygenme pide una contraseña para cada usuario la cual es diferente para cada usuario, o sea cada usuario tiene su propia 
contraseña ejemplo:
Usuario=flamer              contraseña=4579625
Usuario=$Edu$             contraseña=4789728   
Usuario=pitoloco           contraseña=4958369
Usuario=Under              contraseña=4658936    
Nota: Empezaremos con los crackme primero (uno sencillo y luego uno mas 
complicadito) y después los keygenme (uno sencillo y luego uno mas 
complicadito)
Bueno ya basta de blablabla pasemos a crear nuestro crackme 
Para ello necesitamos el visual Basic 6 y conocimientos de programación y 
mucha imaginación.
Bueno en pesemos abrimos el vb6
Elegimos un nuevo proyecto EXE estándar y le damos clic en abrir
Agregamos un Label, un TextBox y un CommandButton 
En la barra de propiedades al Label1 en la propiedad caption le escribiremos 
Contraseña:
En la barra de propiedades del form1 en la propiedad Caption le escribiremos 
"Mi Primer Crackme"
En la de propiedades del CommandButton en la propiedad Caption le 
escribiremos "Verificar"  y en la Propiedad nombre borramos command1 y le 
ponemos cmd_Verificar
Y en el TextBox  en la propiedad text borramo lo que tenga y en la propiedad 
nombre le ponemos txt_Serial
Ya que tenemos nuestro formulario hecho pasamos a crear nuestro primer 
código que será simple:
Private Sub cmd_Verificar_Click()
If txt_Serial = "123456" Then   
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto"  
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error"  
End If  
End Sub
¿Qué ase? cuando se presiona el botón verificar  preguntara si txt_serial que 
es el cuadro de texto es igual a 123456 si es verdadero mostrara el cartelito 
de correcto y si no marcara error
Bueno como dije es simple ahora pasaremos a uno mas complicado:
Nota1: solo cambiaremos el código, el formulario será el mismo
Nota2: lo codeare lo mas fácil posible para que sea entendible
Option Explicit
Dim contador, numer, x As Integer 
Declaramos las variables contador, numer y x como enteros
Dim letra As String  
Declaramos letra como string 
Private Sub cmd_Verificar_Click()
contador = 0 
inicializa la variable contador en cero
If Len(txt_Serial) = 6 Then 
Pregunta si el largo de la cadena es igual a 6 si es a si entra sino te muestra el mensaje de error
  
 For x = 1 To 6
  Entra en un for donde x es inicializada en 1 y terminara cuando su valor sea 6
  
letra = Mid(txt_Serial, x, 1) 
    letra toma el primer carácter de txt_serial si x es igual a 1 si x igual a 2 toma el segundo y a si sucesivamente
  
numer = Asc(letra) – 3 
  numer sera igual al valor ASCII de letra menos 3
  
letra = Chr(numer)  
 aqui numer es convertido a carácter
Select Case (letra)  
   Case "Q", "W", "E", "R", "T", "Y":
      contador = contador + 1
   Case Else 
      Exit For
   End Select
Next x
Aqui preguntara si letra es igual a alguna de estas letras "Q", "W", "E", "R", "T", "Y" si es a si a contador  se le ira sumando 1 si no sale del ciclo
If contador = 6 Then 
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto"
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error"
End If
Aquí pregunta si contador es igual a 6, si es verdadero te mostrara el cartelito de felicitaciones si no dara error
Else
      MsgBox "Muy mal no lo lograstes", vbCritical, "Error"
End If
End Sub
Bueno reverseando  el código la contraseña será "TZHUW\"
codigo completo:
Option Explicit
Dim contador, numer, x As Integer 
Dim letra As String  
Private Sub cmd_Verificar_Click()
contador = 0 
If Len(txt_Serial) = 6 Then 
For x = 1 To 6
    letra = Mid(txt_Serial, x, 1) 
    numer = Asc(letra) – 3 
    letra = Chr(numer)  
      Select Case (letra)  
         Case "Q", "W", "E", "R", "T", "Y":
            contador = contador + 1
         Case Else 
            Exit For
      End Select
   Next x
   If contador = 6 Then 
      MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto"
   Else
      MsgBox "Muy mal no lo lograstes", vbCritical, "Error"
   End If
Else
      MsgBox "Muy mal no lo lograstes", vbCritical, "Error"
End If
End Sub
Ahora pasemos a crear un keygenme al cuadro de texto le 
pondremos txt_Nombre al segundo txt_Serial y al botón cmd_Verificar y al 
form el nombre queda igual solo le cambiaremos el caption será "Mi Primer 
KeygenMe"  
El primer código será sencillo y el segundo un poco mas complicado y con 
una protección antidebuger bueno seguimos:
Option Explicit
Dim num, x As Integer  
Dim Serial, letra As String 
Declara  las variables num, x a enteros y serial y letra a string
 
Private Sub cmd_Verificar_Click()
Serial = ""   
Serial es inicializado en vasio
For x = 1 To Len(txt_Nombre) 
Aquí entra en un for donde x inicia desde 1 y terminara hasta que su valor sea igual a el largo de la cadena
  
 letra = Mid(txt_Nombre, x, 1)  
    letra toma el primer carácter de txt_serial si x es igual a 1 si x igual a 2 toma el segundo y a si sucesivamente
  
num = Asc(letra) – 1 
numer sera igual al valor ASCII de letra menos 1
  
letra = Chr(num) 
aqui numer es convertido a carácter
  
Serial = Serial & letra 
Concatena la variable serial con letra
Next x
If txt_Serial = Serial Then 
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto" 
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error" 
End If
End Sub
Pregunta si txt_serial es igual a la variable serial si es correcto te muestra el 
mensaje de felicitaciones si no te marca error
codigo completo:
Option Explicit
Dim num, x As Integer  
Dim Serial, letra As String 
Private Sub cmd_Verificar_Click()
Serial = ""   
For x = 1 To Len(txt_Nombre) 
letra = Mid(txt_Nombre, x, 1)  
num = Asc(letra) – 1 
letra = Chr(num) 
Serial = Serial & letra 
Next x
If txt_Serial = Serial Then 
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto" 
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error" 
End If
End Sub
Bueno ya casi llegamos al final en el siguiente ejemplo lo haremos mas 
complicado será un keygenme con un solo cuadro de texto y una protección 
antidebuger
El cuadro de texto se llamara txt_serial y el botón cmd_Verificar
A continuación el código:
Option Explicit
Private Declare Function IsDebuggerPresent Lib "kernel32" () As Long 
Dim contador, par, x, salir As Integer 
Dim letra1, letra2 As String 
Declara la api IsDebuggerPresent y las variables contador, par, x, y salir como 
enteros y letra1, letra2 como string
Private Sub Form_Load()
salir = 0
se inicializa la variable salir en cero
If IsDebuggerPresent Then  
   salir = 1
End If 
End Sub
Pregunta si hay algun debugger si es a si entra y se leda el valor de 1 a salir 
Private Sub cmd_Verificar_Click()
contador = 0 
se inicializa la variable contador en cero
If salir = 1 Then   
   salir = 1E+100  
pregunta si salir es igual a 1 entra y séle da un valor grande para que marque error
Else 
   par = Len(txt_Serial) Mod 2
es dividido el largo de txt_serial en 2 y par obtiene el residuo si es 1 o 0
  
 If par = 0 Then 
Pregunta si par es igual acero
      
For x = 1 To Len(txt_Serial) / 2 
    x es inicializada en 1 y terminara cuando x sea igual a la mitad de lo largo de 
txt_serial
  
letra1 = Mid(txt_Serial, x, 1) 
     letra1 toma el primer carácter de txt_serial si x es igual a 1 si x igual a 2 toma el segundo y a si sucesivamente
  
letra2 = Mid(txt_Serial, Len(txt_Serial) - x + 1, 1) 
letra2 toma el ultimo valor de txt_serial si x es igual a 1, si es igual a 2 toma el penúltimo y a si sucesivamente
 
If letra1 = letra2 Then 
   contador = contador + 2 
End If
 Pregunta si letra1 es igual a letra2 si es a si a contador sele suma 2
  
Next x 
End If 
End If
If contador = Len(txt_Serial) Then 
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto"  
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error" 
End If
End Sub
Pregunta si contador es igual ala longitud de txt_serial si es a si te muestra el cartelito de felicidades si no te marca error
codigo completo:
Option Explicit
Private Declare Function IsDebuggerPresent Lib "kernel32" () As Long 
Dim contador, par, x, salir As Integer 
Dim letra1, letra2 As String 
Private Sub Form_Load()
salir = 0
If IsDebuggerPresent Then  
   salir = 1
End If 
End Sub
Private Sub cmd_Verificar_Click()
contador = 0 
If salir = 1 Then   
   salir = 1E+100  
Else 
   par = Len(txt_Serial) Mod 2
If par = 0 Then 
For x = 1 To Len(txt_Serial) / 2 
       letra1 = Mid(txt_Serial, x, 1) 
       letra2 = Mid(txt_Serial, Len(txt_Serial) - x + 1, 1) 
        If letra1 = letra2 Then 
            contador = contador + 2 
         End If
    Next x 
  End If 
End If
If contador = Len(txt_Serial) Then 
   MsgBox "Felisidades lo has logrado", vbExclamation, "Correcto"  
Else
   MsgBox "Muy mal no lo lograstes", vbCritical, "Error" 
End If
End Sub
Bueno terminamos eso es todo por hoy  
Solo les es puse  4 codigos para que seden una idea de cómo se hacen los 
crackmes y se animen
Nota: los códigos expuestos son fáciles de revertir, hacer el keygen no es  tan complicado conociendo el código y los hice lo mas entendible posible y 
declarando muchas variables para que los entendieran ya que se puede usar con menos variables
Nota: si quieren hacer mas difícil el crackme o keygenme solo necesitan un 
poco de imaginación asiendo mas operaciones, para hacer mas largo el código 
y podrían agregarle un xor a sus operaciones 
Bueno aquí los dejo denle gracias a Tinkipinki y tincopasan que fueron los que pidieron el tutorial yo no tenia pensado postearlo por que se me asía que anadien le iba a gustar ya que le quite las imágenes pero si a alguien le sirve que bueno 
Saludos Flamer
			
 
			
			
				Gracias por el tutorial esta muy bueno, no lo pude leer pero las primeras partes que leí las entendi muy bien.
Yo  no soy muy fanatico de visual basic, pero con tu explicacion es muy facil aprender rapido visual basic.
Saludos Flamer!