Tutorial Creasion de Crackme en VB6

Iniciado por Flamer, 20 Julio 2012, 01:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Flamer

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

jEUDi17

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!
En paz me acostaré y asimismo dormiré; Porque sólo tú, Señor, me haces vivir confiado.


Flamer

hola jEUDi17  gracias le hechare un vistaso a tu reto
ya estuve leyendo el tema y parece interesante no lo abia bajado(no loe bajado todavía) por que esta ocupado con el tuto lo boy a bajar

saludos flamer

jEUDi17

Cita de: Flamer en 20 Julio 2012, 01:59 AM
hola jEUDi17  gracias le hechare un vistaso a tu reto
ya estuve leyendo el tema y parece interesante no lo abia bajado(no loe bajado todavía) por que esta ocupado con el tuto lo boy a bajar

saludos flamer

S1p, espero que te guste, la verdad me cuesta bastante aprender lenguajes de programacion pero lo voy a seguir intentado.

Suerte!
En paz me acostaré y asimismo dormiré; Porque sólo tú, Señor, me haces vivir confiado.


Tinkipinki

Hola Flamer:
Felicitaciones....., sencillo, entendible y rapido de aprender.. ;-)

Saludos

tincopasan

Flamer Gracias por compartir tus conociemientos!

Flamer

Citar
Publicado por: Tinkipinki
Hola Flamer:
Felicitaciones....., sencillo, entendible y rapido de aprender.. ;-)

Saludos

Citar
Publicado por: tincopasan
Flamer Gracias por compartir tus conociemientos!
gracias a los dos por las felisitaciones, Hojala y sirba de halgo a los que resien empiesan, a ustedes y a los demas compañeros del foro.
no deseo que sea el ultimo tutorial de creacion de crackmes me refiero a que mas gente publique o haga tutoriales sobre el tema ya que pienso que es interesante y escasos