PROGRAMA

      

PROTECCION

     

HERRAMIENTAS

ALFA Crackmes

DESCARGA

 

Sin protección

 

Olly Debugger

SmartCheck

 

 

 

 

 

     NIVEL: Cavernicola

 

 



“Tocar” Visual Basic y Smartcheck



Nota:
Dejo para el final el lenguaje que menos me gusta y el que menos he tocado, pues suelo huir de instalar en mi PC programas en visual basic al igual que he evitado los crackmes en vb.
No pretendo levantar la típica polémica sobre vb que podemos ver en todos los foros de programación, simplemente le tengo manía por que a la hora de desensamblar me resulta confuso y me pierdo.
Quizás si hubiera empezado desensamblando crackmes en vb ahora serian mis favoritos, pero la verdad el desensamblado de otros lenguajes se me hace mas comprensible.
Quede claro que es cuestión de gusto y quizá también de limitación personal, a lo mejor según vaya aprendiendo este tema del cracking los crackmes en visual basic acaban convirtiéndose en mis favoritos.



Podría explicar lo de las Dlls de visual basic y que estos programas (vb) dependen de ellas para su ejecución, también podría escribir un listado de todas las APIs necesarias, pero seria prácticamente un copy – paste de tutoriales de otros crackers que controlan el tema y que en mi opinión deberíais leer.
Antes que copiar a nadie para rellenar espacio en este capitulo y quedar de put@ madre demostrando mis falsos conocimientos en el tema prefiero recomendaros que leáis tutoriales de otros crackers como por ejemplo Coco, donde se explica el tema del crack en visual basic.
Yo seguiré aquí mi línea de explicar lo más claramente posible lo que aprendí por mis propias y pocas experiencias sobre el crack en visual basic.
Esto aunque suene a disculpa es la intencion de este curso : aprender juntos.

Estos crackmes de alfa me vinieron al pelo para esta introducción al crack en vb, gracias Alfa.

Crackme 3 de Alfa


El típico crackme con numero y nombre, lo mejor para ir viendo poco a poco este tema.



Lo cargamos en Olly y vamos a ir directamente a cazarlo por medio de las llamadas a las APIs
Utilizaremos una de las APIs mas comunes para cazar nombres:
vbaStrCmp (String Compare – comparar cadenas de texto)

Con control + N set breakpoint on every reference en la API
__vbaStrCmp



Pulsamos F9 e introducimos nombre y serial y pulsamos el botón registrarse
Olly para en uno de los BPs
Vemos la llamada a la API y en registers nuestro numero

  Registers ->  

Pulsamos F9 otra vez y un poco más abajo la segunda parada donde vemos nuestro nombre

  Registers ->  

F9 por tercera vez y vemos en registers dos cadenas en unicode, parece la típica comparación de seriales verdadero / falso

  Registers ->  

Lo probamos




Intentándolo con Smartcheck

Configuración de Smartcheck

Es un paso necesario tener bien configurado el Smartcheck, sobra decir que la configuración del programa que os voy a mostrar la saque de un tutorial de un gran Cracker: Ricardo Narvaja
Lo adapte haciendo pruebas a mi versión y tal como lo muestro a mi me funciona, no obstante tened en cuenta mi poca experiencia con vb

Utilizo la versión 6.2

En Error detection marcamos



Pulsamos el botón Advanced… y en Advanced Settings



Pestaña reporting todo marcado menos el movimiento del raton (al Raton hay que dejarle siempre libertad para moverse sin controlar sus movimientos, je je)



Bien una vez marcadas estas opciones lo guardamos para que siempre que arranquemos Smartcheck no tengamos que volverlas a marcar

Cargamos el crackme 3 de alfa en Smartcheck y pulsamos play (run)

Aparece el crackme ejecutándose, rellenamos los edit y pulsamos el botón registrarse



Fijaros que una vez que hemos pulsado el botón nos aparece el cartel malo y en el reporte abajo a la izquierda _Click
Smartcheck va grabando todo lo que ocurre al ejecutarse el programa y también todos nuestros movimientos



Aceptamos que somos malos crackers – en mi caso sin dudarlo – y pulsamos stop

Antes de hacer nada más desplegamos View y marcamos como en la imagen las casillas
Arguments, Sequence Numbers y Suppressed Errors

Antes de cerrar este menú haced click en
Show All Events



Siempre que abramos un programa con Smartcheck deberemos marcar una vez que hemos pulsado stop y antes de analizarlo la opcion  Show All Events
las otras 3 (arguments, sequence y suppressed) se quedan grabadas, pero esta no, asi que la marcaremos siempre al abrir un programa, pues sino no veremos todos los eventos.


Arriba en el edit escribid el numero malo y picad en la primera imagen de los prismáticos o edit - find



Smart para aquí y vemos el API vbastrcmp con nuestro numero y debajo nuestro nombre



Seguimos buscando con F3 o los prismáticos (y yo que pensaba que estos solo servian para ver a la vecina en bolas) y paramos aquí donde compara nuestro numero con otra String, el serial verdadero que vimos en Olly, lo vemos también en la ventana de la derecha



Fue un crackme fácil de resolver, a mi altura, para no romperme el coco y verlo clarito.


Crackme 5 de Alfa

Otro facilito para ir pillando el rollo a vb

Lo cargamos en Olly y ponemos BP en todas las vbaStrCmp



F9 y escribimos nuestro pass



Probamos y Olly para



F9 y Olly para de nuevo y vemos en unicode dos nombres: Roman y Fernando (en los anteriores capítulos veíamos las strings que nos interesaban en ascii)



Abrámoslo con Smartcheck y busquemos nuestro serial como lo hicimos con el crackme anterior
Si no podéis encontrar el serial será por que tengáis desmarcadas alguna de la opciones que marcamos al configurar, marcadlas y guardad los cambios.
Llegamos a un punto en que lo compara con Roman y en la línea siguiente con Fernando



Cerramos Smartcheck y probamos con los dos nombres



Así me gusta que sigamos en mi línea.


Crackme 4 de Alfa

Este nos lo intenta poner un poco más difícil apurándonos con el tiempo, pero vemos que es lo mismo



Con olly
Control + N y BP set breakpoint on every reference en __vbaStrComp
F9 y para observamos la linea que hay justo encima de donde paro (
00401E89) y vemos la palabra secreto



Con smartcheck find 15151515



El único problema para resolver este crackme esta en vuestra rapidez para escribir la palabra secreto.


Crackme 1 de Alfa

Carguémoslo y busquemos en Olly vbaStrCmp



No lo encontramos, pero tenemos otra forma de cazar el serial utilizaremos  
__vbaVarTstEq
Ponemos los BPs como anteriormente



F9, escribimos nuestro numero y para aquí, como no vemos nada alrededor entramos en el
call 00401DDF con F7



Aparecemos aquí y empezamos a bajar pulsando
F7  y solo F7 despacio, de la misma forma que en capitulos anteriores trazabamos con F8



Llegamos aquí y vemos en el Stack el numerito 1633

  Stack ->  

Seguimos con
F7 hasta que en esta dirección (fijaros que no pertenece al programa sino al modulo OLEAUT32) vemos en registers lo que parece la comparación de siempre entre nuestro serial y el bueno

  Registers -> 

Lo probamos como serial pero no funciona
Me habré equivocado, vuelvo a repetir la operación y al llegar al mismo punto veo otro serial distinto

 Registers -> 

Ahora seguro que si, además justo debajo de donde veo eso hay algo que parece una comparación de strings en
7716B889 VarBstrCmp
Introduzco 1639 y tampoco es el serial correcto

Empiezo a mosquearme y pienso que alfa habrá introducido una rutina para cambiar el serial, alguna de esas operaciones matemáticas que odio por que soy torpe y me vuelvo loco intentando averiguar que c#ñ# hacen.
Pienso que es su primer crackme y que no pudo tener tan mala idea, empiezo a utilizar la intuición que es lo único que me queda en estos casos y después de unas cuantas pruebas salta la chispa.
Mirad la solución



Toma como serial la hora / minutos del sistema
Si pasamos ese minuto y probamos el serial no funciona, hay que introducir la hora y los minutos exactos, menos mal que en el fondo Alfa fue un buen tipo y no utilizo lo segundos también



Con Smartcheck
Busco mi serial pero ahora no lo pilla el crackme este de los huevos !!!



Estoy hundido en la más profunda miseria pues no conozco el funcionamiento de Smartcheck y ademas soy un crackeador novato.
Intento una a la desesperada pero como siempre confiando en la intuición



Nada, claro es lógico probare con
__vbaVarTstEq que es lo que utilice para sacar el serial con Olly
Ahora si veo 1724



Bueno muchos “crackers de verdad” como yo digo se habrán echado unas risas a costa de este capitulo, lo importante es que veáis como sin conocimientos de un lenguaje de programación y apenas conocimientos de crackeo, con un par de APIs sacadas de algún tuto de un algún maestro, con un poco de lógica y siguiendo vuestro instinto se puede conseguir el serial.

Nags

Lo poco que se sobre eliminar Nags en vb lo aprendí de los tutos de Coco - si estáis interesados en vb empezad por leerle a el – aquí os dejo un pequeño apunte sobre eliminar Nags.

Crackme Nag de Alfa creado a propósito para el curso (gracias again)

Al ejecutar el crackme aparece una Nag y cuando lo cerramos otra



Sigo los pasos que aprendí de Coco botón derecho Search for – All constants



Escribo
2B0 y pulso OK para buscar



Hay un push y un call, me centro en el call y pongo un BP



Mas abajo veo el final de este tramo de código, un retn en la dirección
402120




Y mas arriba el principio de este tramo del código en
402040 aquí hago control + R para ver desde donde es llamado este tramo del código donde se genera la Nag



Y Olly me envía a
401AAA



Ahora cambiare la dirección del salto para que vaya directamente al retn
402120 y evite la aparición del Nag



Guardad cambios y probad, crackme resuelto solo con buscar esa constante y cambiando el valor de un salto

Como no me gusta solo copiar de otros investigue un poco y probé a hacerlo de otra forma: nopear el
call 4020DF
Lo probé y me funciono sin tener que buscar el JMP y cambiarlo.


Esta forma es “experimental” y no se si funcionara siempre.



Fin del capitulo, no fue tan desagradable como pensaba.
Gracias en especial a Coco por sus tutoriales de visual basic de donde he aprendido lo poco que se de cracking en vb y por enesima vez a Alfa por sus crackmes.

 

Capitulo siguiente

                                                                                                 


Febrero 2004

Pagina oficial del curso

 

Gracias a ...