[Lazarus-es] Tamaño ejecutables

Bruno Luciani bruno.luciani en gmail.com
Mie Jul 1 02:05:29 CEST 2009


Joshy

Me llama la atencion tu comentario de que un ejecutable que sera lanzado
varias veces no debe comprimirse.

Esto se aplica en el caso de un ejecutable en un servidor que es accesado
por varios clientes , y ejecutado desde cada pc cliente ?

Es mi caso de un ejecutable en Harbour que esta comprimido con UPX
y se ejecuta desde cada cliente.

Comenta

Bruno

El 30 de junio de 2009 16:57, JoshyFun <joshyfun en gmail.com> escribió:

> 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
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090630/71832db5/attachment-0002.html>


More information about the Lazarus-es mailing list