"Este binario comprimido UPX contiene un encabezado de Mach-O no válido y no se puede cargar".

9

Estoy intentando lanzar una aplicación más antigua en macOS Sierra. Funcionó bien en El Capitán, sin embargo, desde la actualización a Sierra se bloquea de inmediato al iniciarse con el error ...

  

Este binario comprimido UPX contiene un encabezado de Mach-O no válido y no se puede cargar.

Usando Homebrew en El Capitán, instalé UPX y lo utilicé para intentar descomprimir el binario, sin embargo, esto me dice que el binario no está comprimido en primer lugar.

$ upx -d /tmp/Run.app/Contents/MacOS/Run
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
upx: /tmp/Run.app/Contents/MacOS/Run: NotPackedException: not packed by UPX

Unpacked 0 files.

Este es el registro de bloqueo al abrir la aplicación en Sierra.

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGKILL)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    EXEC, [0xc] This UPX compressed binary contains an invalid Mach-O header and cannot be loaded.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fffcffeabb2 __posix_spawn + 10
1   libsystem_kernel.dylib          0x00007fffcffe5ef2 posix_spawn + 386
2   xpcproxy                        0x000000010dbb2d75 0x10dbb0000 + 11637
3   xpcproxy                        0x000000010dbb3992 0x10dbb0000 + 14738
4   libdyld.dylib                   0x00007fffcfebc255 start + 1

¿Cómo puedo hacer que esta aplicación se abra en Sierra?

    
pregunta grg 07.09.2016 - 10:40

5 respuestas

4

3.92-BETA revision 3 funciona en Sierra y funciona para i386!

  

enlace también funciona para I386, también.

jreiser en github.com/upx # 4 comment

3.92 admite la compresión de binarios en Sierra de modo que se puedan ejecutar en Sierra, y también admite descompresión de binarios en Sierra. 3.92-BETA también admite descomprimir archivos binarios que se han modificado después de la compresión, como con una firma de código.

¡Descomprimir el binario de la aplicación usando la opción -d funciona muy bien!

$ chmod +x upx.out 
$ ./upx.out -d /tmp/Run.app/Contents/MacOS/Run
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2016
UPX 3.92-BETA   Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 22nd 2016

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     57444 <-     24576   42.78%   macho/i386    Run

Unpacked 1 file.
    
respondido por el grg 24.09.2016 - 20:31
5

Respuesta revisada:

Para ocultar las trazas, los piratas pusieron a cero los marcadores UPX del binario comprimido, por lo que macOS Sierra no puede descomprimir el binario. (Intente con: hexdump -C YourApp.app/Contents/MacOS/YourApp | grep -C 1 UPX y vea, lo más probable es que no haya salida).

Sin embargo, jreiser de UPX aceptó el desafío y abordó este problema con la implementación de una búsqueda más robusta de código comprimido. v3.92 será posible hacer que estas aplicaciones se ejecuten de nuevo al descomprimir los ejecutables con upx -d YourApp.app/Contents/MacOS/YourApp .

Obtenga betas de 3.92 aquí .

    
respondido por el RyuX51 21.09.2016 - 19:22
1

No reconozco su código en particular, aunque este es un problema común con una nueva versión del sistema operativo (compatibilidad con software heredado).

  • Primer paso, busque en el sitio web de los desarrolladores una indicación de que estarán parchando para Sierra. Es posible que ya hayan publicado un parche beta que no está disponible a través de la Actualización de software.

  • Envíe un correo electrónico al Dev preguntándoles directamente. Les puede llevar un tiempo ponerse al día, especialmente si tienen múltiples aplicaciones en múltiples plataformas.

  • Considera tener un Mac de arranque dual. Generalmente guardo un clon de mi sistema actual en otra unidad (o partición) después de una nueva instalación del sistema operativo, luego puedo reiniciar rápidamente y continuar usando el software. De hecho, actualmente mantengo una Mac heredada con 10.6 y 10.8 solo para este soporte.

  • Considere una máquina virtual. Puede usar un emulador en OSX e instalar la versión del sistema operativo que prefiera (incluido Windows). Sin embargo, no estoy seguro si los emuladores se han liberado para Sierra.

respondido por el Applefanboy 07.09.2016 - 19:07
1

El problema ha sido reportado como UPX es una manera, muy rota por Darwin 16 / OS X Sierra. # 4 .

Parece que upx 3.92 solucionará este problema.

    
respondido por el ɹoƃı 21.09.2016 - 14:12
1
brew install upx

upx -d YourApp.app/Contents/MacOS/YourApp

funcionó para mí.

    
respondido por el Pellet 17.11.2018 - 04:58

Lea otras preguntas en las etiquetas