Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: .:UND3R:. en 19 Agosto 2011, 22:18 pm



Título: [Tutorial]Crackeando CrackMe1 de Karcrack
Publicado por: .:UND3R:. en 19 Agosto 2011, 22:18 pm
CrackMe1 de Karcrack
Autor: Karcrack
Nombre: #1 Crackme
Fecha: 27 de diciembre de 2008
Tamaño: 24,0 KB
Compilador y/o Packer: Visual Basic
Objetivos:Encontrar una clave valida
Dificultad: 2/3 (1-10)
Descarga del crackme:http://karcrack.funpic.de/1CrackMe.rar (http://karcrack.funpic.de/1CrackMe.rar)
Autor de Tutorial:UND3R

Noté que no había ningún tutorial, por eso decidí realizar uno
Descarga del tutorial en .doc: http://www.mediafire.com/?00a114mb1eagtti (http://www.mediafire.com/?00a114mb1eagtti)

-Colocamos el crackme en el la ruta:
Citar
C:/
-Cargamos el crackme con OllyDBG y buscamos referencias de texto:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/1.jpg)

encontramos algunas interesantes, parecen PATH, comprobemos
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/2.jpg)

Las PATH son variables de rutas o datos que posee windows como por ejemplo
Citar
windir=Carpeta del sistema operativo
programfiles=Carpeta archivo de programa

Para ver las path de nuestro sistema operativo, nos vamos a Inicio->Ejecutar->CMD una vez cargada la consola de windows tecleamos el comandoSET y luego enter:

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/3.jpg)

Si buscamos un poco podremos corroborar con set que son path:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/4.jpg)

Por lo que nos dirigimos a la string con doble click
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/5.jpg)

y colocamos un BP en ella:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/6.jpg)

Si traceamos un poco llegaremos hasta 0040274C, si lo pasamos
EAX retornará el valor de HOMEDRIVE
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/7.jpg)

Sigamoslo en el dump
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/8.jpg)

Pasando:
0040275E   .  FFD7          CALL EDI
EAX=retornará el valor de HOMEPATH

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/9.jpg)

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/10.jpg)

Veamos el valor en el dump:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/11.jpg)

Si seguimos traceando llegaremos hasta esta API:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/12.jpg)

en donde concatenará (juntará) el valor del HOMEDRIVE con el HOMEPATH en EAX
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/13.jpg)

Veamoslo en el dump:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/14.jpg)

Si seguimos traceando mucho más abajo llegaremos a la siguiente API que se encarga de Pasar a Mayúsculas las string's:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/15.jpg)
 en este caso la concatenación

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/17.jpg)

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/18.jpg)

una vez ejecutada la API, podremos ver en el DUMP el HOMDRIVE+HOMEPATH en mayúsculas
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/19.jpg)

Sigamos traceando aquí vemos la llamda de una API muy importante:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/20.jpg)

InStr (Función, Visual Basic)

Devuelve un entero que especifica la posición inicial de la primera aparición de una cadena dentro de otra.

Parámetros

Citar
Start
Opcional. Expresión numérica que establece la posición inicial para cada búsqueda. Si se omite, la búsqueda comienza en la primera posición del carácter. El índice de inicio está basado en 1.

String1
Requerido. Expresión String en la que se busca.

String2
Requerido. Expresión String que se busca.

Compare
Opcional. Especifica el tipo de comparación entre cadenas. Si se omite Compare, el valor Option Compare determinará el tipo de comparación.

fuente msdn.microsoft.com


(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/21.jpg)

En este caso retornó 0 EAX
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/22.jpg)


Luego toma valor obtenido en EAX y lo mueve a ESI:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/24.jpg)

Luego testea ESI, a través de la tabla AND:
1 AND 1= 1
1 AND 0= 0
0 AND 1= 0
0 AND 0= 0

Por lo que al ser TEST SI,SI existen una posibilidad que de 0 y es si SI=0

1 AND 1= 1
0 AND 0= 0
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/25.jpg)

Si le damos F9 la primera condición no se dará debido a que cuando se llamó la API EAX=retorno 0

por lo que si ponemos el crackme en la ruta:
 
Citar
C:\Users\Victor\
de ahí en adelante, cuando se pasa por la API InStr esta devolverá lo siguiente:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/23.jpg)

Ahora al momento de dar RUN la primera condición se cumple, ahora vamos por la otra


Si buscamos referencias, encontraremos otro PATH
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/26.jpg)

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/27.jpg)

vallamos hacia el y pongámosle un BP

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/28.jpg)

Coloquemos un número en el serial:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/29.jpg)

Se dentendrá en USERNAME:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/30.jpg)

Si seguimos traceando llegaremos hasta la siguiente API:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/31.jpg)

en la que retornará el valor de USERNAME:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/32.jpg)

vayamos al dump:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/33.jpg)

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/34.jpg)

Si seguimos traceando notaremos que compara la cantidad de caracter que se colocaron al serial con 6, cantidad de caracteres de mi USERNAME, algo sospechoso si este es mayor automáticamente la condición dos no se cumple
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/35.jpg)

Si seguimos traceando llegaremos aquí:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/36.jpg)

Luego de pasar por esta API toma la primera letra de mi username V que en hexadecimal es 56 y le suma 1 transformándolo en F7 es decir en W

(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/37.jpg)

Pongamos un BP en tal API y demos RUN
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/38.jpg)

Notaremos que vuelve a detenerse ahí y continúa haciendo lo mismo con los otros caracteres de mi USERNAME:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/39.jpg)

Probemos colocar mi USERNAME sumandole uno a cada string como mi serial:
(http://r00t-pssw.webcindario.com/images/Crack/CrackMe1%20por%20Karcrack/40.jpg)

Notaremos que lo hemos logrado, por lo que por conclusión:

1-Condición se debe tener el crackme dentro de C:\Users\Victor\ Puede ser cualquier subcarpeta, pero debe tener como base tal ruta

2-el serial correcto es el USERNAME (Nombre de nuestra cuenta) y sumarle 1 a cada string


Título: Re: [Tutorial]Crackeando CrackMe1 de Karcrack
Publicado por: Flamer en 20 Agosto 2011, 00:07 am
felisitaciones yo lo abia resuelto pero no sabia muy bien el mecanismo fue chiripada a como lo resolbi
Citar
1-Condición se debe tener el
crackme dentro de C:\Users
\Victor\ Puede ser cualquier
subcarpeta, pero debe tener
como base tal ruta
yo lo copie al escritorio y cuando lo corri prendio un foco y presione 1 y listo crackme resuelto queria hacer un tutorial pero meganastes y no sabi muy bieo el funcinamiento
bueno felisidades
ya pronto mi segundo crackme


Título: Re: [Tutorial]Crackeando CrackMe1 de Karcrack
Publicado por: .:UND3R:. en 20 Agosto 2011, 04:26 am
Muchas gracias que bueno que te haya gustado, el primero a mi también me apareció activado, ya que lo analizaba dentro del escritorio ( dentro de la homepath) por lo que luego de darme cuenta de la utilización de path's y la comprobación que se hacían con ella intente cambiar de ruta y funcionó, Saludos y muchas gracias nuevamente.