You are on page 1of 11

Autor: Coco

Hola, empezaremos este tutorial aclarando que la técnica usada funciona tanto en VB5 como en VB6,
personalmente no me gustan los programas en VB, Crackearlos Obviamente, pero si me agradan en general,
además hoy en día existen gran cantidad de programas hechos con este lenguaje de programación, y no hay
muchas técnicas que ayuden a crackearlos, también decir que prefiero el Visual Basic 6.0.
Veremos como OllyDbg es más poderoso de lo que imaginamos si sabemos utilizarlo correctamente y como
crackear Programas en VB será más placentero.

Lo que intento en este tutorial es aportar un granito de arena más (y de ayuda) a la hora de toparnos con este
lenguaje tan curioso.

Lo único que me queda por decir es que si alguien quiere corregir, aumentar, o quitar algo de este tuto, que lo
haga, en ningún momento se pretende que sea una guía cerrada sino todo lo contrario. J

Empecemos:

UN POCO DE TEORIA:

Bueno, los programas en Visual Basic como sabrán trabajan de una manera diferente a los demás programas
¿Porqué digo “Diferente”? porque utilizan constantemente unas librerías externas, llamadas MSVBVM50.DLL
en Visual Basic 5.0 y MSVBVM60.DLL para la versión 6.0. Estas librerías son las encargadas de “traducir” el
código del programa (por ejemplo las APIs).
Bueno, lo interesante es que cuando desensamblamos un programa hecho en VB por primera vez seguramente
no entenderemos una #$%&@ de lo que vemos y esto es normal, demás está decir que necesitaremos nuevas
técnicas de cracking y hasta la ayuda de otros programas para salir victoriosos, ¿Quién no conoce a Smart
Check? ;)

En los programas hechos en Visual, se utilizan generalmente los registros: EAX, ECX, y EDX.
Bueno, lo que haremos es “Cazar” literalmente los movimientos de memoria permitiéndonos entrar en el
código en el momento en que nuestros datos son preparados para ser manipulados, ósea, justo donde queremos.
;)

LA PALABRA MAGICA:

Visual Basic 5.0

CALL [EAX+000000A0]
CALL [EDX+000000A0]
CALL [ECX+000000A4]

Visual Basic 6.0


CALL [EAX+000000A0]
CALL [ECX+000000A0]

Que son? Bueno… un ejemplo y verán…

Nota:

Dependiendo del tipo y cantidad de llamadas a la DLL variará entre un registro y otro.
También de las APIs utilizadas por el programa.

Para nuestro estudio utilizaremos un programa Shareware hecho en VB6:

Bueno, primero que todo miramos un poco, vamos al menú HELP y seleccionamos REGISTER, completamos
los datos:
Presionamos OK y

Bueno… creía que iba a tener más suerte jeje.

Abrimos el Ejecutable con OllyDbg, Olly lo carga y lo analiza, bien, sigamos…


Aparecemos aquí:
Ahora vamos a suponer que buscamos en las STRINGS REFERENCES y no hay nada.
Supongamos también por un momento que no hay APIs que nos sirvan para tomar el texto.

Que hacemos???

Bueno, hay un pequeño truco que nos permite romper (detener la ejecución del programa), justo cuando se
estén preparando los datos para ser manipulados. O sea, detener el programa cuando lea los datos que
introducimos. ;)

Lo mejor es que no utilizaremos APIs ni nada parecido!!!

Veamos…

Retomemos las cosas, tenemos el Olly con el programa cargadito esperando…

En la primera línea del desensamblado hacemos CLIC DERECHO - SEARCH FOR - COMMAND.
Y en la ventanita tipeamos la palabra mágica:

CALL [EAX+000000A0]

Y luego presionamos FIND

Y Olly se detendrá en la primera referencia:

Ahora ponemos un BPx aquí con F2:


Nota:

Si continuamos buscando “CALL [EAX+000000A0]” (CTRL+L) encontraremos mas referencias pero no nos
servirán, solo la primera que encuentre el Olly, recordar, solo la primera vez que Olly se detenga en la
búsqueda es la que nos interesa.

Ahora presionamos F9 (RUN), completamos los datos y presionamos OK, OllyDbg se detendrá en el BPx

Si trazamos unas pocas líneas podemos ver como se toma el serial que pusimos:

(En mi caso: 1122)

Trazamos hasta:

0041C3AE API: MSVBVM60.__vbaVarTstEq (comparar cadenas)

Y entramos con F7.


Trazamos hasta:

Hacemos CLIC DERECHO sobre el registro ECX - FOLLOW IN STACK:

Y veremos en el STACK el Serial correcto!:

Bueno, espero que puedan utilizarlo, si alguien se anima a hacer un tutorial donde se utilice la técnica, seria
bueno para poder ejemplificar mejor lo aprendido.

Solo se trata de una táctica más a nuestro favor.


Veamos unos cuantos ejemplos mas…
(Unos CrackMEs en VB)

El Crackme Segundo de Daniel:


Ejecutamos el Crackme y vemos:

Un panel numérico para introducir los datos


Abrimos el ejecutable con OllyDbg, y una vez que se termina de cargar, hacemos:

CLIC DERECHO - SEARCH FOR - COMMAND


Y ponemos la palabra mágica: CALL [EAX+000000A0]
Ponemos un BPx y reiniciamos todo (CTRL+F2), presionamos F9 (RUN), y deshabilitamos el Breakpoint
momentáneamente (CTRL+B - Clic derecho -DISABLE ALL)
E introducimos un Serial Cualquiera (yo uso: 1122), pongo 112 y antes de presionar el ultimo 2 volver al Olly,
Habilitar el BPx y cuando presionamos el 2 (para completar mi clave: 1122) el Olly se detiene en el BPx,
trazamos unas líneas y vemos como se toman nuestros datos jeje.

El Crackme v2.0 de Eternal Bliss:


Lo cargamos con el OllyDbg, CLIC DERECHO - SEARCH FOR - COMMAND
Y ponemos la palabra mágica: CALL [EAX+000000A0]

Olly se detiene, ponemos un BPx, damos F9 (RUN), completamos con cualquier número y presionamos
REGISTER
Olly se detiene en el BPx, trazamos unas líneas mas abajo y vemos:

Como el programa toma nuestros datos. Jeje.

El Crackme v3.0 de Eternal Bliss:


Bueno… espero que desde ahora crackear en Visual Basic sea mas agradable.

Coco.

co2_cracker@hotmail.com

You might also like