Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: karmany en 19 Septiembre 2007, 23:37 pm



Título: Tutorial Crackme1 de Nitr0k1ller por Nanocity
Publicado por: karmany en 19 Septiembre 2007, 23:37 pm
Este tutorial ha sido realizado por el forero Nanocity el 17 de agosto de 2007 como solución al Crackme1 de Nitr0k1ller. Descarga del crackme y más información en:
http://foro.elhacker.net/index.php/topic,180720.msg860578.html#msg860578


Tutorial Crackme1 de Nitr0k1ller por Nanocity

Bueno se trata del crackme de Nitr0k1ller, el tuto es muy simple y esta hecho con intención de que lo entienda el que este justo empezando con esto:

Lo primero que hacemos es ejecutar el crackme para mirarlo un poco por encima:
Vemos que nos pide un serial y que para poder introducirlo tenemos que activar un botón, además navegando por los menús vemos que parece ser que está escrito en VB.

Para asegurarnos corremos el PeiD y efectivamente nos dice que es así. Para activar el botón podemos usar algún descompilador de VB pero como no tengo ninguno por aquí usaremos el Olly que nos sirve igual.

Un método de hacerlo es buscar el bit que determina si la propiedad Enabled está o no activa, asique cargamos el Olly y buscamos la caption del botón en este caso "&Check" (Search for -> All referenced text strings, Search for text), la encontramos y pinchamos en el texto para que nos lleve a la zona de memoria donde está, caemos en una zona donde parece que se han cargado todos los objetos y dentro de las propiedades del botón. Ahí buscamos un solo bit que este a 0 (ya que el botón esta desactivado), y vemos que hay unos cuantos (con un poco de práctica se puede saber cuál es el correspodiente) así que probamos cambiando el primero (Modify byte) a un 1. Corremos el crackme y vemos que el boton sigue inactivo pero que ha cambiado de posición, hemos cambiado lo que no era... No pasa nada, reiniciamos el olly, probamos con el siguiente y apuntamos la dirección por si acertamos... Bien! Esta vez el botón esta activo, ya sabemos que bit debemos cambiar. Para hacerlo damos click derecho, Copy to executable->All modifications, aparece otra ventana, la cerramos y nos da la opción de guardar nuestro programa modificado, asique lo guardamos con otro nombre.

Ahora viene la segunda parte, sacar el serial. Cargamos nuestro crackme modificado, sabemos que esta en VB, en esos casos es interesante ver en el olly las funciones que se han usado (Crtl+N), ahi vemos que hay funciones de concatenación de strings y sobre todo una de comparación (vbaVarTstEq), colocamos un breakpoint cada vez que se llame a esa función y ejecutamos otra vez el crackme. Introducimos un serial cualquiera y vemos donde para el Olly, es posible que ahí se haga la comparación entre nuestro serial y el válido asique comprobamos que se ha hecho algunas instrucciones antes. Vemos que hay muchas funciones para ver la fecha del sistema, quizá sea interesante. Colocamos con F2 algún breakpoint después de esas instrucciones y volvemos a ejecutar para tracear qué se hace con esa fecha. Vamos avanzando con F8 y nos damos cuenta de que justo antes de la comparación hace un PUSH EAX, traceamos en la pila EAX y vemos una cadena sospechosa y nuestro serial un poco más arriba. Además si nos fijamos esa cadena es el mes, el año, el dia, guión, la hora y los minutos en un formato concreto. Todo esto es suficiente para hacernos pensar que puede ser un serial válido asique lo probamos, teniendo cuidado de introducir bien el minuto y no estar demasiado lentos. Y sí, funciona! ya hemos crackeado el programa Cheesy.

Espero que a alguie le sirva de algo.

Un saludo.
Nanocity