crosspost de: http://pastafr0la.wordpress.com/2011/02/18/probando/
Gracias a "El Tio Pastafrola" por la colaboracion y por prenderse con el proyecto FUU!.
--
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.
1 comentario:
Me gustaria probar esta info e instrucciones pero donde se puede descargar este "protector" ?
alguien podria subirlo y compartirlo ???
Gracias de antemano
Publicar un comentario