stringtranslate.com

Compresión ejecutable

La compresión ejecutable 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 ocurre de forma transparente, por lo que el ejecutable comprimido se puede utilizar exactamente de la misma manera que el original. Los compresores ejecutables a menudo se denominan empaquetadores 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 , donde un ejecutable comprimido se empaqueta junto con el código de descompresión correspondiente en un archivo ejecutable. Algunos ejecutables comprimidos se pueden descomprimir para reconstruir el archivo de programa original sin ejecutarlos directamente. Dos programas que se pueden utilizar para hacer esto son CUP386 y UNP. [ cita necesaria ]

La mayoría de los ejecutables comprimidos descomprimen el código original en la memoria y la mayoría requiere 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 escriben el ejecutable descomprimido en el sistema de archivos antes de ejecutarlo.

La compresión ejecutable no se limita a ejecutables binarios, sino que también se puede aplicar a scripts, como JavaScript . Debido a que la mayoría de los lenguajes de secuencias de comandos 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 espacios en blanco .

Ventajas y desventajas

Los distribuidores de software utilizan la compresión ejecutable por diversas razones, principalmente para reducir los requisitos de almacenamiento secundario de su software; Como los compresores ejecutables están diseñados específicamente para comprimir código ejecutable, a menudo logran una mejor relación de compresión que las instalaciones 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 los medios de distribución elegidos (como CD-ROM , DVD-ROM o disquete ), o reducir el tiempo y el ancho de banda que los clientes necesitan para acceder al software distribuido a través de Internet .

La compresión ejecutable también se utiliza con frecuencia para impedir la ingeniería inversa u ofuscar el contenido del ejecutable (por ejemplo, para ocultar la presencia de malware de los escáneres antivirus ) mediante métodos propietarios de compresión y/o cifrado añadido . La compresión ejecutable se puede utilizar para evitar el desensamblaje directo , enmascarar literales de cadenas y modificar firmas. Aunque esto no elimina la posibilidad de realizar ingeniería inversa, puede encarecer el proceso.

Un ejecutable comprimido requiere menos espacio de almacenamiento en el sistema de archivos y, por lo tanto, menos tiempo para transferir datos del 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 varios medios de almacenamiento no se ha mantenido a la altura de las velocidades promedio del procesador, por lo que el almacenamiento suele ser 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 comprimir 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 código auxiliar del descompresor asigna un bloque de memoria para contener 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 utiliza un archivo de intercambio, los datos descomprimidos deben escribirse en él para liberar la memoria en lugar de simplemente descartar los 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 bloques de datos que ya ha cargado, los datos deben descomprimirse en un nuevo bloque de memoria y Se puede cambiar de forma independiente si no se utiliza. Los requisitos adicionales de almacenamiento y tiempo significan que se debe sopesar cuidadosamente si se deben comprimir ejecutables que normalmente 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 código auxiliar del extractor vinculado estáticamente .

Además, algunos escáneres de virus más antiguos simplemente informan todos los ejecutables comprimidos como virus porque los códigos auxiliares 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 ejecutables diferentes para comprobar el ejecutable real que contiene, pero algunos escáneres antivirus y antimalware populares han tenido problemas con alarmas de falsos positivos en los ejecutables comprimidos. En un intento por resolver el problema del malware ofuscado con la ayuda de empaquetadores de tiempo de ejecución , IEEE Industry Connections Security Group ha introducido un sistema de etiquetado de software .

La compresión ejecutable solía ser más popular cuando las computadoras estaban limitadas a la capacidad de almacenamiento de los disquetes , que eran medios a la vez lentos y de baja capacidad, y discos duros pequeños ; permitió 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 ejecutable se ha vuelto menos popular debido al aumento de la capacidad de almacenamiento en las computadoras. Tiene su uso en la escena de demostración donde las demostraciones deben permanecer dentro de un límite de tamaño, por ejemplo, introducción de 64k . Sólo 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 de MS-DOS

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

ejecutable OS/2

Compresores ejecutables conocidos bajo OS/2 :

Nuevo ejecutable

Compresores ejecutables conocidos para nuevos ejecutables :

Ejecutable portátil

Compresores ejecutables conocidos para ejecutables portátiles :

Nota: Los clientes en color violeta 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 Mac OS Classic :

Archivos Mach-O (Apple Mac OS X)

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

Comodoro 64 y VIC-20

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

amigos

Compresores ejecutables conocidos para ejecutables de la serie Amiga :

Java

Compresores ejecutables conocidos para Java :

Archivos JAR :

Archivos de guerra :

javascript

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

Compresores autodescomprimibles

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

Compresores reductores de redundancia

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

Ver también

Referencias

  1. ^ Gielen, Pierre; Taylor, Johnathan (1997) [1993]. Logan, Lobezno (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 de MSX-DOS […] cambie el nombre del archivo […] para ejecutarlo [. …]
  2. ^ "Informe experto de Robert BK Dewar en respuesta al informe de Kenneth D. Crews". Cambridge University Press et al contra Patton et al, Presentación 124, Divulgaciones iniciales suplementarias de Cambridge University Press, Oxford University Press, Inc., Sage Publications, Inc. - Cambridge University Press, Oxfort University Press, Inc. y Sage Publications, Inc. contra Mark P. Becker, presidente de la Universidad Estatal de Georgia, et al, Acción Civil No. 1:08-CV-1425-ODE (documento judicial). Tribunal de Distrito de los Estados Unidos para el Distrito Norte de Georgia, División de Atlanta. pag. 18. Anexo A. Archivado desde el original el 1 de mayo de 2018 . Consultado el 23 de abril de 2019 . […] SPACEMAKER y TERMULATOR, software básico 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, 8.000 líneas […]
  3. ^ Realia, Inc. (enero de 1983). "Si usas DOS, necesitas este programa". Revista PC (anuncio). 2 (9). Publicación Ziff-Davis : 417. Archivado desde el original el 22 de abril de 2019 . Consultado el 22 de abril de 2019 .
  4. ^ ab Dewar, Robert Berriedale Keith (13 de marzo de 1984). "DOS 3.1 ASMB (otro error tonto de Microsoft)". [email protected] . Archivado desde el original el 1 de mayo de 2018 . Consultado el 23 de abril de 2019 . […] La opción /E del vinculador debería generar un archivo EXE que sea lógicamente equivalente al archivo EXE sin comprimir. La versión actual […] resulta en que AX sea golpeado. AX al ingresar a un archivo EXE tiene un significado definido (indica la validez de la unidad para los parámetros), por lo que debe 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 no tener este particular […]
  5. ^ ab Paul, Matthias R. (7 de octubre de 2002) [2000]. "Re: problema relacionado con masm .com (PSP)". Grupo de noticias : alt.lang.asm. Archivado desde el original el 3 de septiembre de 2017 . Consultado el 3 de septiembre de 2017 .}
  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). "Una actualización sobre 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. ^ Millas, Ya'akov; Nather, Ed (17 de mayo de 1986) [5 de febrero de 1986, 9 de febrero de 1986]. "Opción de Microsoft LINK no documentada: /E". Lista de correo INFO-IBMPC . Archivado desde el original el 1 de mayo de 2018 . Consultado el 26 de abril de 2019 . [Miles:] Existe un cambio no documentado […] a Microsoft LINK.EXE […], que provocará una compactación automática durante el enlace. Este proceso eliminará el almacenamiento de matrices no inicializadas del archivo .EXE producido por el vinculador […] Para usar esta función, especifique la opción /E en la línea de comando […] [Nather:] La opción no existe en las versiones de MS Link 3.00 y 3.01 [Millas:] Al comparar los tamaños de los archivos (empaquetados) generados a partir de LINK ver 3.02 y la opción /E con el tamaño del archivo .EXE empaquetado manualmente con […] EXEPACK, he llegado a la conclusión de que La opción /E de LINK ver 3.02 genera EXACTAMENTE un archivo del mismo tamaño 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. ^ a b C Salomon, David (2000) [1998]. "Capítulo 3.22: Compresores EXE". Compresión de datos: la referencia completa (2 ed.). Springer-Verlag . pag. 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, Matías 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 combos 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 uno . […] 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 código auxiliar hecho por usted mismo al archivo, una vez que ya se ha comprimido […] todos los controladores de dispositivos DR-DOS comprimidos utilizan una técnica similar para permitir que el descompresor PKLITE .COM normal funcione con archivos .SYS (mientras tanto, PKLITE admite una función similar para los archivos .SYS). ). […](NB. PKLITE 1.50 (1995) y versiones posteriores obtuvieron la capacidad de comprimir controladores de dispositivos, pero no controladores COM+SYS combinados).
  14. ^ "Google Code Archive: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code". Archivado desde el original el 3 de diciembre de 2021 . Consultado el 7 de abril de 2022 .
  15. ^ "DotBundle: descargue 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 2020-07-20 . 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 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; Marca, Dave (1999). "Una charla con Steve Kiene". MacTech . vol. 15, núm. 4. Archivado desde el original el 10 de diciembre de 2017 . Consultado el 10 de diciembre de 2017 .
  23. ^ "Programa de compresión de datos sin pérdidas: híbrido LZ77 RLE". www.cs.tut.fi. ​Archivado desde el original el 30 de julio de 2014 . Consultado el 15 de enero de 2022 .
  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/Reductor". GitHub . 2021-09-25. Archivado desde el original el 7 de abril de 2022 . Consultado el 7 de abril de 2022 .
  28. ^ "PackFire v1.2k de Neural". Archivado desde el original el 30 de junio de 2024 . Consultado el 7 de abril de 2022 .