Home > Unpacking > Nuevo Plugin para FUU – dePFE

Nuevo Plugin para FUU – dePFE

Hola amigos, hoy les traigo una pequeña reseña sobre el packer PFE CX v0.1 con el cual hice mis primeros pinitos en TitanEngine y FUU

primero echemos una mirada a la GUI del protector

haremos una muestra con el maximo nivel de compresion y todas las opciones activadas, en mi caso usare calc.exe para probarlo.

Este protector corre en dos procesos como podemos ver en la imagen

asi que lo cargamos con OllyDBG y buscamos las llamadas a CreateProcessA para caer en la zona caliente del packer

aca estamos en la zona caliente, vemos como crea el proceso hijo en modo suspendido, alloca memoria y despues le escribe algunas cosas en memoria 🙂

Pongamos un bp en el WriteProcessMemory que le sigue al VirtualAllocEx y miremos que tiene el buffer

ese MZ corresponde a la cabezera de nuestro protegido, en mi caso calc.exe. Esto significa que no tendremos que trabajar con el segundo proceso porque el primero ya nos da el programa en bandeja de plata.

Lo unico que tenemos que hacer ahora es alinear y dumpear

Para alinearlo, cambiamos el RawOffset y RawSize de cada seccion por su VirtualOffset y VirtualSize respectivamente.

y hacemos un dumpeado de memoria con por ejemplo, el dumper del plugin IsDebuggerPresent

Obteniendo un PE valido y funcional.

Automatizarlo con TitanEngine es bastante sencillo, los pasos a seguir serian:

  • Setear un BP en WriteProcessMemory con la funcion SetAPIBreakPoint.
  • El callback encargado de procesar ese breakpoint, alineara y dumpeara la imagen 🙂

Para dumpear regiones de memoria tampoco nos tenemos que complicar mucho, ya que TitanEngine nos provee de la funcion DumpMemory.

Eso es todo amigos, un packer facilito siempre y cuando ataquemos el primer proceso. En las primeras pruebas arranque trabajando con el segundo proceso y la verdad es que cuesta mucho trabajar con los 2 procesos a la vez debido a que el SDK aun no nos provee de dichas funciones y lo tenemos que hacer a mano.

Todo este proceso fue automatizado en el siguiente plugin: bin src

p.d. Para los que estan interesados en crear algun plugin para FUU, les paso la buena noticia que ya no es necesario el uso de la funcion _DoUnpack para elegir setear nuestro primer callback.

Ahora directamente trabajamos con InitDebugEx que como ultimo argumento nos permite definir un bp que se ejecutara cuando llegue al callback del debuggee.

Tengan bien presente esto, ya que si tratan de definir bp en API’s sin haber iniciado el DebugLoop, esta funcion no procesara el LOAD_DLL (CodeException 06) y por lo tanto no podran setear los bp debido a que no estan cargadas las dll’s.

Advertisements
  1. NCR
    February 19, 2011 at 8:03 pm

    Muy buen post! gracias por la contribucion!

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: