Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: tomasjrl en 30 Septiembre 2014, 06:06 am



Título: ¿como me recomiendan seguir? (siguiendo la ruta de validacion de un .exe)
Publicado por: tomasjrl en 30 Septiembre 2014, 06:06 am
Bueno, soy nuevo, mi nombre es Tomás... hace 1 año que sigo esta pagina, pero esta es la primera que posteo.... les comento mi caso:


- utilizo ollydbg y hasta ahora eh puesto breackpoints hasta dar con el "punto clave"

- el .exe pertenece a un programa que al ejecutarse valida o no al usuario leyendo un "key.txt" que posee nombre/email/contraseña

- si los datos son correctos, el juego te lleva al menu principal directamente (NO hay cartel de felicitacion)
- si los datos no coinciden, SI te aparece un cartel (invalid key), y luego te lleva al menu principal

- Quiero aclarar que yo tengo el "key.txt" correcto asi que esto que busco es por el simple hecho de aprender a 'leer' este proceso y de ser posible generar alternativas.



Bueno, en un principio fui poniendo "breakpoint" sobre el "messagebox" (el cartel que aparece cuando sale el mensaje de 'invalid key') ... pero como esto se produce YA concretado la comparacion de "validacion", pues no logre retroceder hasta el "punto clave" (el momento donde compara datos)


Entonces, comence a seguir la ruta desde el COMIENZO mirando el "CreateFileA" (si, desde el comienzo).. y de a poco fui desenmarañando la ruta hasta dar con EL PUNTO CLAVE donde el programa lee el archivo "key.txt" para luego hacer una comparacion interna y a partir de alli llevarte a la version completa directamente, o al cartel nefasto (invalid key)...


Quiero aclarar que no da lo mismo poner cualquier nombre, ni cualquier mail.. la falta de cualquier letra hace saltar al cartel "invalid key"...  lo unico que permite es acortar la password escrita en el key.txt solo mientras coincida con la password con la que la termina comparando.

Evidentemente debe haber "decenas de nombres, emails y contraseñas" cargadas... me imagino que aca lo mas directo seria "validar" la comparacion equivocada, o saltearse dicha comparacion...

lo que me gustaria preguntar, es que veo ahi los "mov" con los cuales 'mueve' los datos, y veo que a todos ellos les prosigue un mismo "call" ....  es como que todos esos datos los juntara y "llamara" a 'el punto clave' para compararlos (yo pienso que el "y.txt" debe ser un archivo oculto con todas las claves)...  


Bueno, espero se entienda el mensaje.....  lo que busco no es que me digan "la solucion"... sino como proseguir, que podria hacer ahora?  ya puse todos los breakpoints hasta dar con el momento clave... ¿y ahora? ..  :silbar:


Título: Re: ¿como me recomiendan seguir? (siguiendo la ruta de validacion de un .exe)
Publicado por: MCKSys Argentina en 30 Septiembre 2014, 14:57 pm
Bueno, espero se entienda el mensaje.....  lo que busco no es que me digan "la solucion"... sino como proseguir, que podria hacer ahora?  ya puse todos los breakpoints hasta dar con el momento clave... ¿y ahora? ..  :silbar:

Lo que debes hacer a continuacion dependerá de qué quieres lograr: quieres que no salga el cartel con datos incorrectos? Pues, para eso debes buscar el salto decisivo, el que lleva al chico bueno o chico malo (como dicen en alguno tutoriales), y parchearlo para que siemrpe tome por el chico bueno.

Aunque lo mejor que puedes hacerle es, reversearlo: analizar cada uno de los bucles/trozos de codigo que comoponen ese segmento que has encontrado. Saber qué es cada cosa y para qué se la usa. Una vez lo hagas, podrás hacer el key.txt con los valores que quieras...  ;)

Veo que es un C/C++, así que IDA puede darte una mano con los call genericos (strcopy/strcat/strcmop/etc)

Saludos!

PD: Incluso podrías ver qué es eso del y.txt. Quizás sea alguna especi de atajo (hack) que hizo el programador para hacer pruebas...  :P


Título: Re: ¿como me recomiendan seguir? (siguiendo la ruta de validacion de un .exe)
Publicado por: tomasjrl en 30 Septiembre 2014, 17:49 pm
Desde ya muchas gracias..... obviamente voy a probar todas las opciones que pueda encontrar y que me vayan sugiriendo... primero para ver si logro hacer funcionar a alguna  :laugh:  .... y despues para observar como trabaja el archivo con los procesos modificados...   ;D  ya que me facina este tema... 


como les digo, leere cualquier propuesta y sugerencia que me recomienden...  lo importante sera aprender haciendo y leyendo... ;D




Título: Re: ¿como me recomiendan seguir? (siguiendo la ruta de validacion de un .exe)
Publicado por: tomasjrl en 1 Octubre 2014, 04:54 am
Bueno, quiero comentar mis avances..

Finalmente, me di cuenta siguiendo los procesos que, el ejecutable, como comentaba al inicio, carga los datos obtenidos del "key.txt" (nombre/email/password) y luego realiza un proceso de "comparaciones" con datos internos (eh podido ver muchas passwords y muchos nombres, pero ningun email, y ademas ninguno era de forma "ordenada" por lo que a ciencia cierta no pude armarme todavia de un "key.txt" con distintos datos)... asi que esto lo debo dejar para un analisis posterior.


PERO... si que logre 'validar' (aunque no con todas las funciones habilitadas) al ejecutable!!  ;D



 


Título: Re: ¿como me recomiendan seguir? (siguiendo la ruta de validacion de un .exe)
Publicado por: tomasjrl en 2 Octubre 2014, 05:52 am
Edito porque YA di con la solucion:

1) Habia que poner un "JMP Campeon Olimpico"  ;D en el punto clave
2) Y en el "key falso" habia que respetar una cantidad de letras minimas de escritura para que sea aceptado

 ::)