Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: M0str3nc0 en 22 Julio 2010, 06:47 am



Título: Novateando con un programa.
Publicado por: M0str3nc0 en 22 Julio 2010, 06:47 am
Hola a todos y mis respetos para quienes practican el arte de la ingenieria
inversa.

De a poco, estoy tratando de meterme en el asunto; vi algo de Assembler hace muchos años y de veras, todo esto es grandioso y hasta enviciador  ;D
 Pues bueno, tengo un programa del cual estoy intentando extraer la contraseña, para ello, estoy usando algunos tutoriales de Narvaja que me sirven de base para lograr mi objetivo. OllyDbg 1.10 es la herramienta de trabajo. Entonces, que hice:

* La lista de cadenas (All referenced strings) estan en ingles pero el programa muestra todos sus mensajes en español :o  No estoy seguro si la traduccion se hace a traves del servicio WMI.  :o

* El mensaje de error (chico malo) no esta en los mensajes en ingles.

* Trate de acercarme mediante la lista de ventanas (opcion W) pero la que
muestra el error no se detiene con el BP en ella.

* Tampoco tuve suerte con los mensajes de Windows. Poniendo el BP condicional en el boton "Siguiente", codigo 202 tampoco funciona. Sigue derecho y no para. (hay que escribir la contraseña "mala", oculta con * y dar Siguiente para validarla).

* No se como captura los caracteres pero definitivamente no es con  GetDlgItemTextA ni GetWindowTextA (no estan en el listado de Ctrl + N).

Mejor dicho, el programa parece inocente (ni siquiera esta empacado, hecho en Visual C++) pero esta aprovechando mi inexperiencia para reirse de mi. Vi que usa IsDebuggerPresent mas si pongo BP, nunca llega (o no parece). Igual tengo el plugin de Olly para tal efecto.

El consejo que necesito es saber que estoy haciendo mal y/o que otra ruta puedo tomar para acercarme a la comparacion de los seriales, que debe estar justo despues de hacer click en Siguiente, una vez lo escribes.

Gracias por adelantado.

M0str3nc0.


Título: Re: Novateando con un programa.
Publicado por: LSL en 22 Julio 2010, 12:22 pm
como las referencias a las string están en inglés, prueba a configurar el programa para que se muestre en ingles, en vez de traducido al español, así te será mas facil localizar los mensajes originales.

Si no puedes configurarlo en su idioma natural, busca los mensajes en memoria con Alt+M, Control+Inicio y Control+B (para buscar), una vez localizado el texto, le pones un "Breakpoint > Memory on access".


Título: Re: Novateando con un programa.
Publicado por: gastonp en 22 Julio 2010, 12:25 pm
Hola M0str3nc0, yo también soy nuevo en esto pero si me decis cual es el programa quizas pueda darte una mano (dos cabezas piensan mas que una  :D).
Con respecto a la API IsDebuggerPresent, si tenes un plugin que la evita Olly no se va a detener ahí.
Saludos


Título: Re: Novateando con un programa.
Publicado por: M0str3nc0 en 22 Julio 2010, 14:56 pm
Hola gastonp.

500 % de acuerdo  ;D No puse el programa por seguir las reglas del foro  ;) Solo lo dire si los moderadores estan de acuerdo.

Un saludo y gracias.


Título: Re: Novateando con un programa.
Publicado por: tena en 23 Julio 2010, 00:29 am
Ejecutas el programa en el olydbg....
Te vas a la ventana de registro, escribe algun pass falso, y das aceptar,
te saldra la ventana de Serial Incorrecto,
volves al ollydbg, y lo pausas, luego presionas Alt+F9,
regresas al programa y aceptas el mensaje,
el olydbg deberia parar, y estaras justo debajo de la call que te saca el mensaje malo.

Luego es cuestion de buscar por ahi arriba

slds


Título: Re: Novateando con un programa.
Publicado por: yako-_- en 23 Julio 2010, 06:57 am
Buen dato tenna me lo apunto!! ;-) esa forma no la sabia yo


Un saludo!!


Título: Re: Novateando con un programa.
Publicado por: M0str3nc0 en 23 Julio 2010, 20:35 pm
Hola a todos.  ;D

Que pena la demora, tengo mucho trabajo acumulado y no he podido encargarme como quisiera.

El enfoque de LSL es muy bueno, no se me habia ocurrido. Pero no aparecen las cadenas traducidas en el bloque de memoria  :( Incluso cuando el mensaje de error esta en pantalla no se ve. Igual este metodo se ve prometedor para futuras ediciones.

Baje el plugin OllyAdvanced (muy bueno!) y le endureci el mecanismo de ocultacion; solo por si las moscas ;) el resultado para M es el mismo: no se ven.

Tena: No he podido probarlo a fondo pero inicialmente SI LE DOLIO al maldito programa: Aterrizo muy cerca y alcanzo a ver los parametros de llamada.  ;D

Tratare de terminar lo pendiente y le caigo con toda energia.

Saludos.


Título: Re: Novateando con un programa.
Publicado por: LSL en 24 Julio 2010, 00:42 am
Cuando buscas en memoria el text de un mensaje, este puede estar en formato ACII ó en formato UNICODE, para buscarlo en formato unicode lo debes escribir en la ventana de busqueda en el apartado de unicode, pero en memoria siempre está sino no lo verias en pantalla.
Si no encuentras el texto completo, busca el titulo de la ventana, alguna palabra suelta, etc.

Si el texto no está en memoria puede ser que el mensaje en si sea una imagen prediseñada tipo bmp por ejemplo.