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:
Código [Seleccionar]
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
Código [Seleccionar]
Option Explicit
Dim contador, numer, x As Integer
Declaramos las variables contador, numer y x como enteros
Código [Seleccionar]
Dim letra As String
Declaramos letra como string
Código [Seleccionar]
Private Sub cmd_Verificar_Click()
contador = 0
inicializa la variable contador en cero
Código [Seleccionar]
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
Código [Seleccionar]
For x = 1 To 6
Entra en un for donde x es inicializada en 1 y terminara cuando su valor sea 6
Código [Seleccionar]
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
Código [Seleccionar]
numer = Asc(letra) – 3
numer sera igual al valor ASCII de letra menos 3
Código [Seleccionar]
letra = Chr(numer)
aqui numer es convertido a carácter
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
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:
Código [Seleccionar]
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:
Código [Seleccionar]
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
Código [Seleccionar]
Private Sub cmd_Verificar_Click()
Serial = ""
Serial es inicializado en vasio
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
num = Asc(letra) – 1
numer sera igual al valor ASCII de letra menos 1
Código [Seleccionar]
letra = Chr(num)
aqui numer es convertido a carácter
Código [Seleccionar]
Serial = Serial & letra
Concatena la variable serial con letra
Código [Seleccionar]
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:
Código [Seleccionar]
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:
Código [Seleccionar]
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
Código [Seleccionar]
Private Sub Form_Load()
salir = 0
se inicializa la variable salir en cero
Código [Seleccionar]
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
Código [Seleccionar]
Private Sub cmd_Verificar_Click()
contador = 0
se inicializa la variable contador en cero
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
If par = 0 Then
Pregunta si par es igual acero
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
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
Código [Seleccionar]
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:
Código [Seleccionar]
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