Autor: skapunky
Nombre: Skrackme 1
Fecha: 18 de septiembre de 2007
Tamaño: 32,0 KB
Compilador y/o Packer: Visual Basic
Objetivos:
1- Eliminar una nag
2- Activar un botón
3- Encontrar un ID/pass válidos
Descargar Crackme: http://karmany.fortunecity.com/img/skrackme1.zip
Descargar tutorial en formato .doc: http://www.mediafire.com/?32k452law9attcp
Citar
*Revisando el Thread crackmes y tutoriales, noté que este crackme no tenía tutorial, por eso me animé a realizarlo, aunque mientras lo realizaba me topé con que un usuario si lo había realizado, pero el enlace estaba muerto
el usuario es: Gevaudan
http://foro.elhacker.net/ingenieria_inversa/crackmes_tutoriales-t180720.0.htmlel usuario es: Gevaudan
1- Eliminando la nag
Para eliminar la nag utilizaremos el método denominado 4C este método consiste en que desde ollydb podamos alterar el orden de los form a iniciar de visual basic, para ello debemos ubicarnos en el OEP e ir a la dirección que apunta el PUSH en el dump:
Una vez ahí debemos sumarle 4C tal como lo indica la siguiente imagen:
luego de sumarle 4C obtendremos 4018E8, luego nos dirigimos a esa adress:
luego de esto nos dirigimos a la dirección que apunta el adress en el dump:
Una vez ahí si al adress le sumamos 24 obtendremos el primer form al igual que el siguiente de la forma numérica 0,1,2,3,4,5,6:
en donde 0 es el primer form que muestra el crackme, es decir el NAG y a continuación muestra el crackme, por lo que si alteramos el orden podría desaparecer el NAG, hagamos la prueba:
una vez modificado nos debería quedar así:
Guardamos los cambios y probamos a ver si nos ha funcionado:
Ya NO nos aparece el NAG
2- Activar el botón
Para activar el botón utilizaremos numega smartcheck ya que este se encargará de mostrarnos la dirección del botón junto con sus atributos, en este caso nos debería aparecer que el botón está desactivado, iniciamos numega smartcheck seleccionamos skrackme1 le damos a iniciar (botón play)
Notamos que dentro de Form1 se encuentra un botón llamado Command1 con atributo Enable=False si le hacemos click, en la derecha,podremos ver en donde se encuentra:
37C0 y si le sumamos la Base Address (400000) nos dará: 4037C0
Iniciamos con ollydbg scrackme1 modificado para saltar el NAG y nos dirigimos a
4037C0:
si nos dirigimos un poco más arriba por defecto debería tener un PUSH 0 al inicio que indicaría que el botón está deshabilitado, en caso contrario nos aparecería PUSH 1, en este caso nos debería aparecer PUSH 0, pero no nos aparece, por lo que lo más probable es que se haya hecho alguna modificación, pero siguiendo la estructura mencionada anteriormente debería haber aquí algún valor que es "pusheado" junto con un 0, probemos poniendo un BP en PUSH EDI:
Reiniciamos, si se ha borrado el BP se debe colocar de nuevo
Le damos RUN y al detenerse notamos que se detiene en nuestro BP, si miramos nuestro alrededor, especialmente el valor de EDI notaremos que es 0:
Que ocurrirá si lo incrementamos EDI (lo dejamos en 1) valor que equivalente a enable=true
Luego le damos RUN y veamos que ocurre:
Nuestro Botón está activado
Bueno pero ahora hagamos esta modificación permanente, nos dirigimos nuevamente en el PUSH EDI y miramos nuestro alrededor:
Si miramos EBX notaremos que tiene el valor 1
Por lo que deberemos Modificar PUSH EDI por PUSH EBX:
Con esto ya podremos guardar los cambios permanentes
3- Encontrar un ID/pass válidos
Abrimos nuestro skrackme alterado para no mostrar el NAG y con el boton habilitado, luego buscamos que API utiliza:
Esta API es muy interesante, esta se encarga de comparar dos variables
Por lo que pongámosle un BP:
de todas formas busquemos la referencias de texto:
Si buscamos un poco notaremos algunas referencias importantes:
Si nos dirigimos al address en donde se encuentra, má arriba encontraremos un salto llamativo:
Pongamos un BP en ese salto
Le damos RUN y nos carga skrackme1 sin ningún problema ahora introducimos datos falsos, en mi caso:
Citar
UND3R
989898
989898
luego de introducir los datos falsos presionamos el botón con el candado y se nos detiene en la API __vbaStrCmp y si vemos en la pila:
Algo curioso mi serial falso y otro serial, podría ser el correcto, si damos RUN nuevamente se nos detendrá en el bp del salto
Si invertimos el salto:
Nos quedará:
y si damos RUN nuevamente nos aparecerá lo siguiente:
Por lo que ya hemos obtenido el Serial correcto y además hemos localizado el salto que se debe invertir para que el serial introducido sea siempre el correcto