Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Nanocity en 3 Junio 2010, 16:35 pm



Título: Desempaquetando UPX manualmente.
Publicado por: Nanocity en 3 Junio 2010, 16:35 pm
Buenas, he retomado esto de la ingeniería inversa que tenia un poco olvidada así que decidí empezar por un crackme posteado aquí hace poco.

El caso es que está empaquetado con UPX, según el RDG, UPX 1.95 Beta - 2.00W.
Total que como quería investigar un poco busqué tutos para desempaquetarlo de forma manual y di con bastantes que explicaban como hacerlo: encontrar el PUSHAD, luego el POPAD y luego el salto incondicional para llegar al EOP...

Hasta ahí vamos bien, el problema que tengo es que a mi, ese salto (el que esta justo después del POPAD y que me lleva muchos bytes atrás) no me deja en un PUSH EBP como he leído que es habitual sino que me manda a otro salto.

POPAD:
(http://img168.imageshack.us/img168/1219/pic1mqt.jpg) (http://img168.imageshack.us/i/pic1mqt.jpg/)

Instrucción en la que cae el salto posterior al POPAD:
(http://img139.imageshack.us/img139/7681/pic2ot.jpg) (http://img139.imageshack.us/i/pic2ot.jpg/)

Lo raro, además es que en el momento que muevo el cursor o hago cualquier cosa, la instrucción de arriba cambia a esto:
(http://img690.imageshack.us/img690/4412/pic3yc.jpg) (http://img690.imageshack.us/i/pic3yc.jpg/)

No sé estoy bastante perdido, he intentado seguir lo que explican los tutoriales usando como EOP el del salto, osea 401320 pero no hay manera de que el ejecutable funcione una vez dumpeado y reconstruida la tabla de importaciones.

Algo debo de estar haciendo mal, a ver si podéis decirme qué porque de momento mis conocimientos no me permiten intentar cosas diferentes o buscarme la vida por otro lado.

P.D.: Esto a lo mejor iba en el post del crackme, que es este (http://foro.elhacker.net/ingenieria_inversa/naxos_20-t265394.0.html), pero era por no revivir un post tan antigüo.

Un saludo.


Título: Re: Desempaquetando UPX manualmente.
Publicado por: LSL en 4 Junio 2010, 00:26 am
El OEP lo has encontrado bien, es el 401320, el problema que debes tener es a la hora de hacer el dump y el arreglo de la IAT, te pongo unas imagenes para que pruebes.

(http://r.i.elhacker.net/cache?url=http://i48.tinypic.com/2h6efsh.jpg)


(http://r.i.elhacker.net/cache?url=http://i45.tinypic.com/2rwq0ls.jpg)

esperas hasta que te salgan las funciones importadas en la busqueda

(http://r.i.elhacker.net/cache?url=http://i46.tinypic.com/seqalv.jpg)

Como le hemos dicho toda una sección de busqueda, encontrara muchas funciones importadas erroneas, pulsas en Show solo las invalidas, click derecho sobre ellas, y Borrarlas todas.

ya solo tienes las funciones importadas buenas, que salvas (Fix Dump) sobre el archivo previamente dumpeado.

Saludos.


Título: Re: Desempaquetando UPX manualmente.
Publicado por: karmany en 4 Junio 2010, 00:39 am
Para gente que no sabe descomprimir un UPX hay programas que lo hacen automáticamente, por ejemplo PEExplorer tiene un plugin muy bueno.

También es posible intentarlo con el mismo UPX.

Hace unos días salió una nueva herramienta que también te lo descomprime automáticamente:
Faster Universal Unpacker, se puede descargar desde:
http://code.google.com/p/fuu/ (http://code.google.com/p/fuu/)


Título: Re: Desempaquetando UPX manualmente.
Publicado por: Nanocity en 4 Junio 2010, 01:15 am
Ahhhh ya veo ya, pues probaré porque la verdad no había leído lo del dialog que salta en el ImpRec :-X.

De todos modos había entendido que el UPX no tocaba la IAT pero intentaré comprender bien el tema de la RVA para saber por qué en este caso hay que hacerle caso a la sugerencia del ImpRec.

Sabía que existen programas para desempaquetar automáticamente pero siempre viene bien hacer las cosas a mano para darse cuenta de como se hacen.

Un saludo y gracias a los dos.