Sie sind auf Seite 1von 6

Estudio completo de archivos INI (crackme 3)

por AkirA Informacin Programa: Tamao: Objetivos: Herramientas: Dificultad: Crakme3 de Joe Cracker El tamao no importa XDDDDD 1. Encontrar el OEP 2. Arreglar la IAT 3. Registrarnos por supuesto xDDDD. 1. Ollydbg 1.09c NewBie avanzado Introduccin Hola a todos!!!! Y bienvenidos a la 22 entrega del curso de AkirA sobre protecciones comerciales. Hoy vamos a estudiar otro crackme de Joe Cracker (Su crackme 3). Me gustan mucho los crackmes de Joe porque son siempre muy divertidos y muy originales, pero sobretodo porque en cada crackme pone algo nuevo, algo distinto que hace que tengamos que realizar una autentica recopilacin de informacin para ir aprendiendo algo nuevo cada vez. Dedico este tuto Joe por sus carckmes tan originales!!! Y a topolino por ser la primera persona en escribirme un email con sus preguntas. A todos los que estis siguiendo este curso MUCHAS GRACIAS Hace tiempo que no pongo frases. Normalmente suelen ser de matrix, pero hoy quiero poner una de mi otra gran pasin, incluso mayor que matrix: THEODEM : Despierta coraje!!!! (que se parece mucho a la famosa frase de los almogvares: Desperta Ferro!!! ) Nota: si necesitis informacin sobre Ollydbg buscar en la pgina de Joe Cracker: www.iespana.es/ollydbg esta es la mejor pgina que hay sobre el tema, de hecho gracias a ella yo hago todos estos proyectos en olly

Comentario del Programa Por supuesto el disclaimer de turno. Vamos a ver, no es que no me haga responsable de la utilizacin de esta informacin, es que directamente paso del tema, el nico propsito de todo esto es de carcter educativo. A fin de cuentas, si lo que quieres es crackear un programa pues te bajas el crack y punto, pero si vas a leer este tutorial es porque tu objetivo es aprender. Eso es lo que nos motiva, el comprender como funcionan las cosas o como estn hechas por dentro, y por supuesto el subidn de haberle ganado a un equipo de ingenieros diseccionando un objeto que ellos haban diseado y del cual no sabemos nada. Manos a la Obra Comienza el asedio.... Ante todo quiero disculparme. S que normalmente sacamos el KeyGen para los crackmes de Joe Cracker, pero me pareci de gran importancia tocar el tema de los archivos.INI . Por eso este tute no ira orientado a resolver el crackme, sino a aprender que son y como funcionan los archivos.INI. Muchas gracias a Joe que con este crackme3 nos va a hacer progresar en nuestro aprendizaje. Empecemos con algo de teora: A veces, queremos guardar algn tipo de configuracin para nuestro programa. Ejemplo: hay varios usuarios y cada uno tiene su configuracin, o simplemente el programa tiene varias opciones y queremos unas en concreto para nuestro ordenador. Bien, ahora para comprender como funcionan los archivos INI salen tres conceptos nuevos. Ejemplo: Para comprender cmo funciona un archivo.INI, es preciso entender su estructura. Todos los archivos INI consisten en tres elementos de informacin: Application, KeyName y Value. El ApplicationName (lpApplicationName o lpAppName) identifica el texto del encabezado que aparece entre los dos corchetes "[ ]" del archivo INI. Por ejemplo, el ApplicationName "Base de datos aparecera como "[Base de datos]". Cada ApplicationName tiene un nmero de KeyName (lpKeyName) con Values asociados para cada uno. Para recuperar o guardar las especificaciones de un archivo INI, es preciso disponer de los ApplicationName y KeyName de la informacin necesaria. Adems, es necesario el nombre del archivo INI que contiene la informacin LA FUNCION WritePrivateProfileString La funcin WritePrivateProfileString almacena una cadena de informacin en el nombre de archivo INI indicado bajo los ApplicationName y KeyName sealados. Esta rutina funciona tanto para valores como para cadenas. El texto de la declaracin para ella aparece en el cdigo siguiente y tiene que encontrarse en el mdulo de cdigo.

Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long LA FUNCION GetPrivateProfileInt La funcin GetPrivateProfileInt obtiene el valor almacenado en el INI indicado para los ApplicationName y KeyName sealados. Si hay un valor, esta funcin devuelve ese valor como un entero. El texto de la declaracin para ella aparece a continuacin. Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long No es preciso enfundar esta llamada a API, porque devuelve un valor compatible con Visual Basic. Bien, Aprovechemos el crackme3 de Joe y veamos un ejemplo: Lo abrimos con el Olly, vamos a la seccin y lo primero es quitar la proteccin por tiempo. Ya sabeis... memory-follow in Dump CPU y en DUMP search for-binary stringTtimer Y bajamos hasta donde pone Ontimer y abajo pone Timer1Timer. Vale, la buscamos en la seccin de arriba, y dos lneas mas arriba esta la direccin de la funcin, vamos all. Yo nopee la call, pero si quieres tambin puedes poner un retn. Ahora hay que encontrar el botn de registrar. Mismo proceso, y vemos que el evento

Onclick es manejado por DaleClick La Buscamos arriba y dos lneas mas arriba esta la direccin de la funcin. Vamos a ella y ponemos un breakpoint On execution.

Ahora damos a run, pinchamos en registrar y ponemos AkirA y la clave 131313 Salta el Olly. Tracemos hasta esta lnea:

Esta es la lnea clave de la tpica comprobacin. Tienes que nopear ese JNZ. Bueno, esta seria la solucin parcheando, pero este no era nuestro objetivo, ya que lo que queremos aprender es como funcionan los archivos INI (NOTA: Si quieres hacer el KeyGen mira el cdigo de arriba. Tanto Imul pues es una pista, pero cuidado!!! No te fes de todos) Vale, si seguimos trazando vemos que mueve la cadena C;\CM3JC.INI. Mis sospechas me dice que este ser el archivo INI que estamos buscando.

Todos Pensamos en CreateFileA y WriteFile para manejar archivos, pero para los archivos INI hay funciones especiales como las que hemos nombrado al principio. Bien, si seguimos trazando llegamos al punto clave de todo el tutorial:

Miramos sus argumentos en la Pila.

Despus de trazar estas lneas de cdigo, abrimos MI PC y seleccionamos C:

Y All vemos esto tan curioso:

Osea, que la AplicationName es [register], el KeyName es to y el valor es el nombre de la persona que introducimos en el cuadro de registro. Bien, ahora ya sabemos como el programa sabe al arrancar si estas registrado o no. Tambin conocemos la estructura del archivo INI que debe tener para saber que estamos registrados Vamos a ver a modo de ejercicio que al inicio del crackme busca este archivo. Reiniciamos todo. Y ponemos un breakpoint en FindFirst y damos a run. Ok, vemos que el nombre del archivo es C:\cm3jc y que va cogiendo archivo por archivo hasta encontrarlo

y que cuando lo hace, busca en su interior

Bueno, se que con esto no me he ganado el premio de Joe pero he credo que seria muy, muy bueno si todos aprendiramos como funcionan los archivos INI. De nuevo, en nombre de todos, muchas gracias a Joe por sus crackmes que nos hacen progresar en nuestro estudio. Hasta la prxima!!!! Nota: Bueno espero que te hayas divertido y sobre todo que hayas aprendido mucho que es de lo que se trata, que te sirva de ejemplo para que tu tambin puedas hacerlo, desde luego no hay comparado como coger un programa, abrirlo, ver un montn de cdigo por todas partes y manejar lo que otros ingenieros han hecho, tu solo, por ti mismo. Bueno, si quieres comentarme algo escrbeme a atalasa@hotmail.com Quiero agradecer a Ricardo Narvaja y a Makkako por su increble esfuerzo de escribir tantsimos y buenos tutoriales que nos han llevado a aprender tanto, agradecer al profesor X por sus famosas compilaciones, Y tambin agradecer a Joe Cracker sus por su pagina muy, muy actualizada y por el esfuerzo de divulgacin de olly que esta haciendo, ha sido muy importante en mis progresos como cracker. Chao!! Espero que hayan disfrutado leyendo este tutorial y que les sirva para incrementar sus habilidades, pero recuerden, lean muchos tutoriales, practiquen, estudien y CRACKEAR ser mucho ms.