Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: OrtaY en 31 Octubre 2011, 17:53 pm



Título: Problema al re-empacar conUPX [RESUELTO]
Publicado por: OrtaY en 31 Octubre 2011, 17:53 pm
Hola, soy nuevo por aquí, porque aunque os leo desde hace mucho, siempre he conseguido resolver mis dudas leyendo topics anteriores y tutoriales.
Pero el problema que tengo ahora no consigo solventarlo.


Mi problema es que al re-empacar con UPX el archivo ejecutable queda inservible, porque no arranca.

Es decir, tengo un ejecutable empacado con UPX, y tras desempacarlo manualmente, dumpearlo y restaurar la IAT funciona perfecto, retoco incluso el baseCode y renombro las secciones para volver a empacarlo con UPX, pero al hacerlo, el ejecutable resultante no arranca.

Me podeis recomendar algun tutorial que explique como recomponer un ejecuble desempacado manualmente para que pueda ser empacado nuevamente con UPX.

Probando con otros ejecutables he notado que al desempacarlo con UPX (de forma automatica) y hacerlo de forma manual, las secciones son completamente diferentes (varian el numero de secciones, los indices y los nombres de las mismas), y si vuelvo a empacar el desempacado de forma automatica si sigue funcionando, pero el desempacado de forma manual, al volver a empacarlo ya no funciona.

El asunto es que a mi ejecutable no puedo desempacarlo de forma automatica (o mejor dicho, no se hacerlo) ya que en realidad es un ejecutable empacado con armadillo v.6 y UPX, de modo que la unica forma que he encontrado para hacerlo es de forma manual, y como he explicado, tras dumpearlo y reconstruir la iat, si lo vuelvo a empacar con UPX ya no arranca.

Alguna posible solucion?

Gracias de antemano, y aprovecho para saludar a Shaddy, Karmany, Apuromafo, entre otros, porque gracias a sus tutoriales cada dia se un poquito mas :)


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 31 Octubre 2011, 18:23 pm
Para explicar de forma mas grafica el problema, he utilizado como ejecutable de ejemplo el crackme del tutorial:

874-Desempaquetando un UPX para RE-Newbies por Shaddy

En la imagen pueden verse las secciones de los distintos ejecutables:

Archivo original
Desempacado automatico
Desempacado manual
Re-empacado del desempacado automatico
Re-empacado del desempacado manual (este es el que no funciona)

(http://imagenes.onlineymas.com/out.php/i70475_a.png)


Título: Re: Problema al re-empacar conUPX
Publicado por: _Enko en 1 Noviembre 2011, 16:33 pm
Intentaste comparar las PE mas detalladamente  de la ejecutable desempacada con upx y la ejecutable desempacada manualmente?
(Para ver las diferencias)

Si es una ejecutable de Borland (Delphi, CppBuilder) entonces en el desempacado manual te faltan secciones, o mejor dicho estan unidas.


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 1 Noviembre 2011, 20:16 pm
Gracias Enko por contestar,

te comento que no puedo comparar las secciones del desempacado manual y el automatico porque el archivo en cuestion no he podido desempacarlo automaticamente, ya que es un armadillo v.6.

El lenguaje en que esta programado es Microsoft Visual C++ segun el RDG

He puesto este crackme como ejemplo porque al no tener armadillo si he podido desempacarlo manualmente y de forma automatica, y ahi me he dado cuenta que efectivamente faltaban sesiones o estaban unidas, tambien cabe destacar que el reempacado del manual pesa 53kb mientras que el reempacado del automatico pesa 168kb.

Como puedo evitar que se pierdan o unan esas sesiones al volverlo a comprimir con upx? En realidad no me importa que las sesiones sean distintas, yo lo que quiero es que el ejecutable siga funcionando despues de volverlo a empacar.

Algun tutorial o programa que me ayude con esto. He buscado por google y por esta pagina pero no he encontrado solucinarlo.





Título: Re: Problema al re-empacar conUPX
Publicado por: .:UND3R:. en 2 Noviembre 2011, 14:59 pm
Disculpa mi intromisión pero para que quieres reempacarlo en UPX?

Saludos


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 2 Noviembre 2011, 15:26 pm
Citar
Disculpa mi intromisión pero para que quieres reempacarlo en UPX?

Saludos

En un principio era para bajarle al archivo de mas de 10mb a menos de 3, pero también me interesa aprender a desempacar UPX de forma manual pero dejando un archivo realmente desempacado, no una ristra de secciones unidas, que incluso el RDG sigue detectando el UPX en el archivo desempacado.

Y esa es justamente mi pregunta, es posible desempacar un archivo protegido y comprimido por armadillo v6 standard protection y UPX, pero obteniendo un ejecutable realmente desempacado, con sus secciones originales?

Gracias :)


Título: Re: Problema al re-empacar conUPX
Publicado por: .:UND3R:. en 2 Noviembre 2011, 17:33 pm
En un principio era para bajarle al archivo de mas de 10mb a menos de 3, pero también me interesa aprender a desempacar UPX de forma manual pero dejando un archivo realmente desempacado, no una ristra de secciones unidas, que incluso el RDG sigue detectando el UPX en el archivo desempacado.

Y esa es justamente mi pregunta, es posible desempacar un archivo protegido y comprimido por armadillo v6 standard protection y UPX, pero obteniendo un ejecutable realmente desempacado, con sus secciones originales?

Gracias :)

Si desempacamos de manera manual por lo general no obtendremos el archivo original (secciones, PE header, tamaño) desempacado con el mismo software, ya que quieres volverlo a empacar por tan solo el peso, podrías empacarlo con otro packer como Aspack, esa es una opción que se me ocurre, sin más que decirte espero que sea de ayuda o idea mi comentario

Saludos


Título: Re: Problema al re-empacar conUPX
Publicado por: apuromafo CLS en 3 Noviembre 2011, 02:15 am
pensemos que tenemos el upx, comienza algo asi

1) pushad
2) descompresion de apis
3)popad
4) salto al oep
5) en el oep!!!!!


ahora bien, desempacado, pero esta aun 1-4, debes nulificar ese sector, que en si no sera usado, luego al tomar el upx y empacarlo denuevo al oep, deberia ir denuevo al mismo entrypoint anterior, al encontrar que ya tiene Pushad, posiblemente desalinea mal o bien detecta que las apis estan ok, por lo cual no verifica las secciones ni overlay, secciones icono ni nada

por ende Como hacerlo mas rapido?
1) desempacar rapido con Pe Xplorer de heaventools
2) nulificar la sección donde antes estaba
3) volver a empacar, luego de REPARADA LA IAT
empacar y cardar la IAT denuevo.

saludos Apuromafo


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 4 Noviembre 2011, 01:00 am
Gracias Apuromafo, me pondré a ello, y en cuanto tenga resultados positivos, los publico, por cierto, conoces algún tutorial al respecto, sobre reparar manualmente archivos desempacados tambien manualmente, estuve revisando todos los tutos de ricardo pero no encontre nada que se adapte a mi caso.

Saludos, OrtaY


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 4 Noviembre 2011, 01:10 am
Si desempacamos de manera manual por lo general no obtendremos el archivo original (secciones, PE header, tamaño) desempacado con el mismo software, ya que quieres volverlo a empacar por tan solo el peso, podrías empacarlo con otro packer como Aspack, esa es una opción que se me ocurre, sin más que decirte espero que sea de ayuda o idea mi comentario

Saludos

Gracias  Und3r, pero prefiero intentarlo de forma manual, de todos modos te comento que probe aspack2.4 y lanza "unkown error" antes de finalizar el proceso, quiza por falta de memoria del equipo.


Título: Re: Problema al re-empacar conUPX
Publicado por: apuromafo CLS en 4 Noviembre 2011, 10:50 am
no creo que haya manual,pero si te sirve de apunte:
http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1401-1500/1404-desempacando%20peid%20095%20upx%20y%20agregando%20una%20imagen%20%2Cmod%20Apuromafo.pdf.7z
igual creo que buscando UPX en Cracklatinos hay mas resultados, pero igual como ciertos escritos vemos estos a mano:

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/801-900/874-Desempaquetando%20un%20UPX%20para%20RE-Newbies%20por%20Shaddy.zip
http://ricardonarvaja.info/WEB/CONCURSOS%202011/CONCURSO%208/Concu8-11_Solu_Genocide_%5BUPX%200.92%5D_%5DDelphi%5B_por_Nox.rar
http://ricardonarvaja.info/WEB/CONCURSOS%202011/CONCURSO%207/Concu7-11_Solu_CrackMe1_%5BUPX%203.07%5D_por_Nox%20.rar
http://ricardonarvaja.info/WEB/CONCURSOS%202011/CONCURSO%207/Concu7-11_Solu_CrackMe2_%5BUPX%202.91_2.X_3.X%5D_por_Nox%20.rar


etc.


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 6 Noviembre 2011, 21:25 pm
pensemos que tenemos el upx, comienza algo asi

1) pushad
2) descompresion de apis
3)popad
4) salto al oep
5) en el oep!!!!!


ahora bien, desempacado, pero esta aun 1-4, debes nulificar ese sector, que en si no sera usado, luego al tomar el upx y empacarlo denuevo al oep, deberia ir denuevo al mismo entrypoint anterior, al encontrar que ya tiene Pushad, posiblemente desalinea mal o bien detecta que las apis estan ok, por lo cual no verifica las secciones ni overlay, secciones icono ni nada

por ende Como hacerlo mas rapido?
1) desempacar rapido con Pe Xplorer de heaventools
2) nulificar la sección donde antes estaba
3) volver a empacar, luego de REPARADA LA IAT
empacar y cardar la IAT denuevo.

saludos Apuromafo


He usado el Pe Explorer pero no ha podido desempacar el ejecutable original, me imagino porque ademas de estar empacado, esta protegido con armadillo v6, concretamente me lanza esto:

06.11.2011 16:37:22 : Open File: C:\A\original.exe
06.11.2011 16:37:22 : File size: 3072000 bytes.
06.11.2011 16:37:22 : Using the Plug-in subsystem...
06.11.2011 16:37:22 : Upack Unpacker Plug-in: Executing...
06.11.2011 16:37:22 : Upack Unpacker Plug-in: <Upack> The file is not Upacked.
06.11.2011 16:37:22 : Upack Unpacker Plug-in: not accomplished.
06.11.2011 16:37:22 : UPX Unpacker Plug-in: Executing...
06.11.2011 16:37:22 : UPX Unpacker Plug-in: <UPX> The file is not UPXed.
06.11.2011 16:37:22 : UPX Unpacker Plug-in: not accomplished.
06.11.2011 16:37:22 : The Plug-in subsystem finished.
06.11.2011 16:37:22 : MS-DOS Header Size: 0040h
06.11.2011 16:37:22 : MS-DOS Header: OK
06.11.2011 16:37:22 : Next Header OFFSET: 0100h
06.11.2011 16:37:22 : PE Signature: OK
06.11.2011 16:37:22 : Calculating Checksum: SUCCESS (Header's Checksum: 002F023Ch / Real Checksum: 002F023Ch)
06.11.2011 16:37:22 : EOF Position: 002EE000h  (3072000)
06.11.2011 16:37:23 : Error! (Step: Examining Exports)
06.11.2011 16:37:23 : Precompiling Resources...
06.11.2011 16:37:23 : Errors detected! Opening file in SAFE MODE...
06.11.2011 16:37:23 : Warning! Import section follows the Resource section.
06.11.2011 16:37:23 : Done.


Por tanto lo he desempacado manualmente (dumpeado y reparacion IAT, quedando un ejecutable que funciona perfectamente) luego he rellenado con ceros toda la region del pushad, he cambiado el nombre de las secciones UPX0 y UPX1 por .code y .data, he actualizado el BaseCode, y ya ni el RDG me detecta el UPX, pero cuando lo intento volver a empacar con UPX, me tira un archivo ridiculamente pequeño que por supuesto no es funcional.

El original empacado pesa 3mb, el desempacado 10mb y el re-empacado solo pesa 119kb!

He probado con otros crackmes empacados con UPX y armadillo y pasa lo mismo.

Por tanto, sigo sin conseguir que el desempacado manual pueda volver a ser empacado con UPX, existe alguna forma de modificar las secciones o algun truco para que el empacado UPX sea viable?

Gracias por los papers que me has recomendado, pero no esta en ellos la solucion a mi problema, pero me ha gustado tu tuto del peid customizado :)

Si alguien se le ocurre algo que me ayude, se lo agradeceria enormemente.

Un saludo, OrtaY


Título: Re: Problema al re-empacar conUPX
Publicado por: OrtaY en 22 Noviembre 2011, 04:36 am
Problema al re-empacar reempacar volver a empacar UPX RESUELTO


Bueno, por fin he conseguido resolver este problema que me traía de cabeza y al final era una tontería!!!!!!


Gracias a los que han participado en este hilo aportando sus conocimientos e ideas.

Todo era una cuestión de flags, lo explico a continuación, por si a alguien se le presenta el mismo problema que a mí, que necesita volver a comprimir con upx un archivo desempacado manualmente.

El empacador UPX antes de iniciar la compresión, mira que no esté previamente empacado, comprobando que las primeras secciones no se llamen UPX0 y UPX1.

Pero la realidad es que a pesar de que cambiemos el nombre de estas secciones, restauremos el BaseOfCode y el BaseOfData, aunque ahora podremos volver a empacar el archivo con UPX, éste resultará un archivo inservible, y podemos darnos cuenta de esto al ver el tamaño ridículo del nuevo archivo, es obvio que hay información que no se ha empacado!

Esto ocurre porque el UPX al crear las nuevas secciones UPX0 y UPX1, le asigna valores de flags erróneos, de modo que si desempacamos manualmente y no corregimos estos errores, será imposible el re-empacado.

Aunque se podrían hacer más cambios para adecuar las flags al contenidos de las secciones, con cambiar un único valor nuestro ejecutable permitirá volver a ser empacado, así pues, cambiaremos la flag de la sección UPX0 que indica que la sección contiene datos no inicializados por otra que indique que contiene código ejecutable y datos inicializados, es decir, cambiamos la cadena E0000080 por E0000060

Con este simple byte cambiado ya podremos volver a empacar nuestro ejecutable con UPX!!!

Espero que os sea de utilidad, un saludo, OrtaY





Título: Re: Problema al re-empacar conUPX [RESUELTO]
Publicado por: apuromafo CLS en 16 Marzo 2012, 20:25 pm
^^ genial que se resolvio ^^