Hello Edwin,
Tuesday, June 30, 2009, 9:02:41 PM, you wrote:
EQ> Alguien puede explicar que hacen esas aplicaciones de UPX y EQ> Strip porque la verdad me estan asustando. Alguein podria postear EQ> algun manual o algo por el estilo de como reducir los ejecutables EQ> porque veo que ya se ha hablado mucho de eso aca
UPX es un compresor especializado en .EXE ya que este tipo de archivos tiene caractr�sticas propias como por ejemplo que algunas partes no se deben de comprimir, otras tienen comportamientos previsibles (como tablas de offsets), etc. Lo que hace b�sicamente es comprimir "a su estilo" el EXE y a�adirlo a un "stub" o cabecera de ejecuci�n. Cuando lanzas el .EXE sed ejecuta el "stub" que coje el resto del EXE (que es lo que est� comprimido) lo descomprime en memoria y arranca el programa normalmente. Es detectado como un virus por algunos antivirus debido a que usa las m�smas t�cnicas que muchos virus que es cambiar el "Entry point" de los ejecutables (normal, por culpa del "stub") y tambi�n por que algunos virus han usado UPX para comprimir sus maliciosos c�digos. Es totalmente seguro siempre que la fuente sea la del autor como todo.
Un ejecutable que vaya a lanzarse en m�ltiples copias a la vez no debe de ser comprimido con UPX (ni con ning�n otro compresor) aunque esta es una cosa poco habitual salvando algunos programas de Microsoft como el famoso "svchost.exe".
Sobre el "strip" como dec�a del UPX un EXE tiene varias partes, algunas son obligatorias (son el EXE en si mismo) como el c�digo, tabla de relocalizaciones, recursos, etc, pero un EXE puede tener m�s partes, y en el caso de FreePascal, una que usa es la parte de debug, donde en el EXE ponen toda la informaci�n que permitir� al GDB mostrarnos los nombres de las funciones que han sido llamadas en el caso de un error, donde se definen los tipos de las variables, etc. Esta informaci�n s�lo es necesaria cuando hacemos un debug, por lo tanto "strip --strip-debug" nos elimina esa secci�n del EXE. A parte existen otros tipos de secciones que son prescindibles totalmente y que las eliminas con "strip --strip-all". Por supuesto despu�s de un "strip-all" ese mismo EXE no podr� ser debugado de un modo aceptable, por eso s�lo se debe de usar cuando vamos a entregar el EXE final al cliente.
Best regards,
JoshyFun