stringtranslate.com

Compresión ejecutable

La compresión de ejecutables es cualquier medio de comprimir un archivo ejecutable y combinar los datos comprimidos con el código de descompresión en un único ejecutable. Cuando se ejecuta este ejecutable comprimido, el código de descompresión recrea el código original a partir del código comprimido antes de ejecutarlo. En la mayoría de los casos, esto sucede de forma transparente, por lo que el ejecutable comprimido se puede utilizar exactamente de la misma manera que el original. Los compresores de ejecutables a menudo se denominan empaquetadores de ejecutables , empaquetadores de tiempo de ejecución , empaquetadores de software , protectores de software o incluso " empaquetadores polimórficos " y " herramientas de ofuscación ".

Un ejecutable comprimido puede considerarse un archivo autoextraíble , en el que se incluye un ejecutable comprimido junto con el código de descompresión correspondiente en un archivo ejecutable. Algunos ejecutables comprimidos pueden descomprimirse para reconstruir el archivo de programa original sin ejecutarse directamente. Dos programas que pueden utilizarse para hacer esto son CUP386 y UNP. [ cita requerida ]

La mayoría de los ejecutables comprimidos descomprimen el código original en la memoria y requieren un poco más de memoria para ejecutarse (porque necesitan almacenar el código del descompresor, los datos comprimidos y el código descomprimido). Además, algunos ejecutables comprimidos tienen requisitos adicionales, como los que requieren escribir el ejecutable descomprimido en el sistema de archivos antes de ejecutarlo.

La compresión de archivos ejecutables no se limita a los archivos ejecutables binarios, sino que también se puede aplicar a scripts, como JavaScript . Debido a que la mayoría de los lenguajes de scripting están diseñados para funcionar con código legible por humanos , que tiene una alta redundancia , la compresión puede ser muy efectiva y tan simple como reemplazar los nombres largos utilizados para identificar variables y funciones con versiones más cortas y/o eliminar los espacios en blanco .

Ventajas y desventajas

Los distribuidores de software utilizan la compresión de archivos ejecutables por diversas razones, principalmente para reducir los requisitos de almacenamiento secundario de su software; como los compresores de archivos ejecutables están diseñados específicamente para comprimir código ejecutable, a menudo logran una mejor relación de compresión que las herramientas de compresión de datos estándar como gzip , zip o bzip2 [ cita requerida ] . Esto permite a los distribuidores de software mantenerse dentro de las limitaciones de su medio de distribución elegido (como CD-ROM , DVD-ROM o disquete ) o reducir el tiempo y el ancho de banda que requieren los clientes para acceder al software distribuido a través de Internet .

La compresión de ejecutables también se utiliza con frecuencia para impedir la ingeniería inversa o para ofuscar el contenido del ejecutable (por ejemplo, para ocultar la presencia de malware a los escáneres antivirus ) mediante métodos propietarios de compresión y/o cifrado adicional . La compresión de ejecutables se puede utilizar para evitar el desensamblado directo , enmascarar literales de cadena y modificar firmas. Aunque esto no elimina la posibilidad de ingeniería inversa, puede hacer que el proceso sea más costoso.

Un ejecutable comprimido requiere menos espacio de almacenamiento en el sistema de archivos, por lo que se necesita menos tiempo para transferir los datos desde el sistema de archivos a la memoria. Por otro lado, se necesita algo de tiempo para descomprimir los datos antes de que comience la ejecución. Sin embargo, la velocidad de los distintos medios de almacenamiento no ha seguido el ritmo de las velocidades promedio de los procesadores, por lo que el almacenamiento es muy a menudo el cuello de botella. Por lo tanto, el ejecutable comprimido se cargará más rápido en la mayoría de los sistemas comunes. En las computadoras de escritorio modernas, esto rara vez se nota a menos que el ejecutable sea inusualmente grande, por lo que la velocidad de carga no es una razón principal a favor o en contra de la compresión de un ejecutable.

En los sistemas operativos que paginan imágenes ejecutables a pedido desde el disco, los ejecutables comprimidos hacen que este proceso sea menos eficiente. El stub del descompresor asigna un bloque de memoria para almacenar los datos descomprimidos, que permanece asignado mientras el ejecutable permanezca cargado, ya sea que se use o no, compitiendo por los recursos de memoria con otras aplicaciones todo el tiempo. Si el sistema operativo usa un archivo de intercambio, los datos descomprimidos deben escribirse en él para liberar la memoria en lugar de simplemente descartar bloques de datos no utilizados y volver a cargarlos desde la imagen ejecutable si es necesario nuevamente. Esto generalmente no se nota, pero se convierte en un problema cuando un ejecutable se carga más de una vez al mismo tiempo: el sistema operativo no puede reutilizar los bloques de datos que ya ha cargado, los datos deben descomprimirse en un nuevo bloque de memoria y se intercambiarán de forma independiente si no se usan. Los requisitos adicionales de almacenamiento y tiempo significan que debe evaluarse cuidadosamente si se deben comprimir los ejecutables que generalmente se ejecutan más de una vez al mismo tiempo.

Otra desventaja es que algunas utilidades ya no pueden identificar las dependencias de la biblioteca en tiempo de ejecución , ya que solo es visible el fragmento de extractor vinculado estáticamente .

Además, algunos escáneres de virus antiguos simplemente informan que todos los ejecutables comprimidos son virus porque los fragmentos de código del descompresor comparten algunas características con ellos. La mayoría de los escáneres de virus modernos pueden descomprimir varias capas de compresión de ejecutables diferentes para verificar el ejecutable real que contienen, pero algunos escáneres antivirus y antimalware populares han tenido problemas con falsas alarmas positivas en ejecutables comprimidos. En un intento por resolver el problema del malware ofuscado con la ayuda de empaquetadores de tiempo de ejecución , el IEEE Industry Connections Security Group ha presentado un sistema de etiquetado de software .

La compresión de ejecutables solía ser más popular cuando las computadoras estaban limitadas a la capacidad de almacenamiento de los disquetes , que eran medios lentos y de baja capacidad, y los discos duros pequeños ; permitía a la computadora almacenar más software en la misma cantidad de espacio, sin el inconveniente de tener que descomprimir manualmente un archivo cada vez que el usuario quería usar el software. Sin embargo, la compresión de ejecutables se ha vuelto menos popular debido al aumento de la capacidad de almacenamiento en las computadoras. Tiene su uso en la escena de demostraciones donde las demostraciones deben mantenerse dentro de un límite de tamaño, por ejemplo, 64k intro . Solo los formatos de compresión muy sofisticados, que aumentan el tiempo de carga, mantienen un ejecutable lo suficientemente pequeño como para participar en estas competiciones.

Lista de empaquetadores ejecutables

Ejecutable CP/M y MSX-DOS

Compresores ejecutables conocidos para archivos .COM CP/M-80 / MSX-DOS :

Ejecutable MS-DOS

Compresores ejecutables conocidos para archivos ejecutables compatibles con MS-DOS ( .COM o .EXE ):

Ejecutable de OS/2

Compresores ejecutables conocidos en OS/2 :

Nuevo ejecutable

Compresores ejecutables conocidos para nuevos ejecutables :

Ejecutable portátil

Compresores ejecutables conocidos para ejecutables portátiles :

Nota: Los clientes en morado ya no están en desarrollo.

Archivos ELF

Compresores ejecutables conocidos para archivos ELF :

Archivos de ensamblaje CLI

Compresores ejecutables conocidos para archivos de ensamblaje CLI :

Aplicaciones clásicas de Mac OS

Compresores ejecutables para aplicaciones de Mac OS Classic :

Archivos Mach-O (Apple Mac OS X)

Compresores ejecutables conocidos para archivos Mach-O (Apple Mac OS X):

Commodore 64 y VIC-20

Compresores ejecutables conocidos para ejecutables en Commodore 64 y VIC-20 :

Amiga

Compresores ejecutables conocidos para ejecutables de la serie Amiga :

Java

Compresores ejecutables conocidos para Java :

Archivos JAR :

Archivos WAR :

JavaScript

Hay dos tipos de compresión que se pueden aplicar a los scripts de JavaScript :

Compresores autodescompresores

Estos comprimen el script original y generan un nuevo script que tiene un descompresor y datos comprimidos.

Compresores que reducen la redundancia

Estos eliminan espacios en blanco, eliminan comentarios y acortan los nombres de variables y funciones, pero no alteran el comportamiento del script.

Véase también

Referencias

  1. ^ Gielen, Pierre; Taylor, Johnathan (1997) [1993]. Logan, Wolverine (ed.). «Manual de ayuda de PMarc». Archivado desde el original el 22 de abril de 2019. Consultado el 22 de febrero de 2019. […] PMEXE.CPM […] es un módulo […] en combinación con PMARC […] utilizado para crear archivos COM comprimidos ejecutables (como LZEXE o PKLITE […] tipo: PMARC <archivo>.COM=PMEXE2.CPM <nombre de archivo> [opciones] El nombre del archivo debe ser .COM […] no .PMA. El archivo de salida tendrá la extensión .CPM. Es un archivo COM MSX-DOS […] renombrar archivo […] para ejecutarlo […]
  2. ^ "Informe pericial de Robert BK Dewar en respuesta al informe de Kenneth D. Crews". Cambridge University Press et al v. Patton et al, Expediente 124, Divulgaciones iniciales complementarias de Cambridge University Press, Oxford University Press, Inc., Sage Publications, Inc. - Cambridge University Press, Oxfort University Press, Inc. y Sage Publications, Inc. v. Mark P. Becker, presidente de la Universidad Estatal de Georgia, et al, Acción civil n.º 1:08-CV-1425-ODE (documento judicial). Tribunal de Distrito de los Estados Unidos para el Distrito Norte de Georgia, División de Atlanta. pág. 18. Anexo A. Archivado desde el original el 2018-05-01 . Consultado el 2019-04-23 . […] SPACEMAKER y TERMULATOR, software comercial para IBM PC ( utilidad de compresión de archivos PC DOS y emulador VT-100 ), comercializado por Realia, Inc. RBK Dewar (1982-1983), lenguaje ensamblador 8088, 8000 líneas […]
  3. ^ Realia, Inc. (enero de 1983). «Si utiliza DOS, necesita este programa». PC Magazine (anuncio). 2 (9). Ziff-Davis Publishing : 417. Archivado desde el original el 22 de abril de 2019 . Consultado el 22 de abril de 2019 .
  4. ^ ab Dewar, Robert Berriedale Keith (1984-03-13). "DOS 3.1 ASMB (Otro error tonto de Microsoft)". [email protected] . Archivado desde el original el 2018-05-01 . Consultado el 2019-04-23 . […] La opción /E del enlazador debería generar un archivo EXE que sea lógicamente equivalente al archivo EXE sin comprimir. La versión actual […] hace que AX sea superado. AX al ingresar a un archivo EXE tiene un significado definido (indica la validez de la unidad para los parámetros), por lo tanto, debería pasarse a la imagen sin comprimir. Dada esta violación muy obvia de las reglas de la interfaz, puede haber otras, no me he molestado en investigar más […] Escribí el programa Realia SpaceMaker que hace algo similar a la opción EXEPACK (pero no hace falta decir que no tiene esta […]
  5. ^ ab Paul, Matthias R. (2002-10-07) [2000]. "Re: masm .com (PSP) related trouble". Grupo de noticias : alt.lang.asm. Archivado desde el original el 2017-09-03 . Consultado el 2017-09-03 .}
  6. ^ Necasek, Michal (30 de abril de 2018). «Realia SpaceMaker». Museo OS/2 . Archivado desde el original el 27 de enero de 2019. Consultado el 22 de febrero de 2019 .
  7. ^ Parsons, Jeff (10 de enero de 2019). "Actualización de las primeras utilidades de Norton". PCjs . Archivado desde el original el 29 de enero de 2019 . Consultado el 22 de febrero de 2019 .
  8. ^ Necasek, Michal (12 de enero de 2019). "Sí, Norton lo hizo". Museo OS/2 . Archivado desde el original el 22 de abril de 2019. Consultado el 22 de abril de 2019 .
  9. ^ ab Necasek, Michal (23 de marzo de 2018). "EXEPACK y la puerta A20". Museo OS/2 . Archivado desde el original el 13 de noviembre de 2018. Consultado el 20 de abril de 2019 .
  10. ^ Miles, Ya'akov; Nather, Ed (1986-05-17) [1986-02-05, 1986-02-09]. «Opción Microsoft LINK no documentada: /E». Lista de correo INFO-IBMPC . Archivado desde el original el 2018-05-01 . Consultado el 2019-04-26 . [Miles:] Existe un cambio no documentado […] a Microsoft LINK.EXE […], que provocará una compactación automática durante la vinculación. Este proceso eliminará el almacenamiento de matrices no inicializadas del archivo .EXE producido por el enlazador […] Para usar esta función, especifique la opción /E en la línea de comandos […] [Nather:] La opción no existe en las versiones 3.00 y 3.01 de MS Link [Miles:] Al comparar los tamaños de los archivos (comprimidos) generados a partir de LINK ver 3.02 y la opción /E con el tamaño del archivo .EXE comprimido manualmente con […] EXEPACK, he llegado a la conclusión de que la opción /E de LINK ver 3.02 genera EXACTAMENTE el mismo tamaño de archivo que ejecutar EXEPACK manualmente en un archivo .EXE normal generado por LINK […]
  11. ^ Bellard, Fabrice (9 de febrero de 2003). «Página de inicio de LZEXE». bellard.org . Archivado desde el original el 24 de marzo de 2019. Consultado el 18 de marzo de 2019 .
  12. ^ abc Salomon, David (2000) [1998]. "Capítulo 3.22: Compresores EXE". Compresión de datos: la referencia completa (2.ª ed.). Springer-Verlag . p. 212. doi :10.1007/978-3-642-86092-8. ISBN 978-3-540-78086-1. S2CID  35889155. Archivado desde el original el 7 de abril de 2022. Consultado el 26 de abril de 2019 .
  13. ^ Paul, Matthias R. (11 de abril de 2002). "Re: [fd-dev] ANUNCIO: CuteMouse 2.0 alpha 1". freedos-dev . Archivado desde el original el 21 de febrero de 2020 . Consultado el 21 de febrero de 2020 . […] > ningún empaquetador puede empaquetar combinaciones como .SYS+.COM o .SYS+.EXE. […] Hay empaquetadores para .COM o .EXE y otros para .SYS, pero yo tampoco he visto un empaquetador que admita ambos en un solo . […] posibilidad de combinar un programa/TSR y un controlador de dispositivo en archivos .EXE […] y un programa/TSR.COM y un controlador de dispositivo en un programa .COM […] También podría ser posible agregar otro stub hecho por uno mismo al archivo, después de que ya haya sido comprimido […] todos los controladores de dispositivos DR-DOS comprimidos usan una técnica similar para permitir que el descompresor .COM PKLITE normal funcione con archivos .SYS (mientras tanto, PKLITE admite una característica similar para los archivos .SYS). […](NB. PKLITE 1.50 (1995) y versiones posteriores adquirieron la capacidad de comprimir controladores de dispositivos, pero no controladores COM+SYS combinados).
  14. ^ "Archivo de código de Google: almacenamiento a largo plazo para el alojamiento de proyectos de código de Google". Archivado desde el original el 2021-12-03 . Consultado el 2022-04-07 .
  15. ^ "DotBundle - Descargar una versión de evaluación". Archivado desde el original el 21 de agosto de 2013. Consultado el 6 de mayo de 2013 .
  16. ^ ab "Protección de software, licencias de software, virtualización de software". Archivado desde el original el 13 de marzo de 2018. Consultado el 12 de marzo de 2018 .
  17. ^ ab "Noticias del software WebtoolMaster". Archivado desde el original el 20 de julio de 2020. Consultado el 15 de enero de 2012 .
  18. ^ "Copia archivada". www.xtreeme.prv.pl . Archivado desde el original el 25 de mayo de 2004 . Consultado el 15 de enero de 2022 .{{cite web}}: CS1 maint: archived copy as title (link)
  19. ^ "Descargar | Sistema de protección de software de Obsidium". Archivado desde el original el 7 de febrero de 2019. Consultado el 18 de abril de 2017 .
  20. ^ "624".
  21. ^ DotProtect http://site.yvansoftware.be/dotpacker1_0 Archivado el 22 de enero de 2011 en Wayback Machine.
  22. ^ Kiene, Steve; Mark, Dave (1999). "Una charla con Steve Kiene". MacTech . Vol. 15, no. 4. Archivado desde el original el 2017-12-10 . Consultado el 2017-12-10 .
  23. ^ "Programa de compresión de datos sin pérdida: Hybrid LZ77 RLE". www.cs.tut.fi . Archivado desde el original el 2014-07-30 . Consultado el 2022-01-15 .
  24. ^ web.comhem.se/~u13114991/exo/
  25. ^ "ByteBoozer (PC)". Archivado desde el original el 15 de agosto de 2022. Consultado el 7 de abril de 2022 .
  26. ^ abc "Crunchers para descargar".
  27. ^ "Askeksa/Shrinkler". GitHub . 2021-09-25. Archivado desde el original el 2022-04-07 . Consultado el 2022-04-07 .
  28. ^ "PackFire v1.2k de Neural". Archivado desde el original el 30 de junio de 2024. Consultado el 7 de abril de 2022 .