Estoy tratando de iniciar una aplicación anterior en macOS Sierra. Funcionó bien en El Capitán, sin embargo, desde la actualización de Sierra se bloquea inmediatamente en el lanzamiento con el error ...
Este binario comprimido UPX contiene un encabezado Mach-O no válido y no se puede cargar.
Usando Homebrew en El Capitan, instalé UPX y lo usé 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 abrir esta aplicación en Sierra?
Respuestas:
Respuesta revisada:
Para ocultar rastros, los piratas redujeron a cero los marcadores UPX del binario comprimido, por lo que macOS Sierra no puede descomprimir el binario. (Pruebe 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 implementando una búsqueda más robusta de código comprimido. v3.92 será posible hacer que estas aplicaciones vuelvan a ejecutarse al descomprimir los ejecutables con
upx -d YourApp.app/Contents/MacOS/YourApp
.fuente
3.92-BETA revisión 3 funciona en Sierra y funciona para i386!
jreiser en github.com/upx # 4 comentario
3.92 admite la compresión de binarios en Sierra para que puedan ejecutarse en Sierra, y también admite la descompresión de binarios en Sierra. 3.92-BETA también admite binarios de descompresión 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
-d
opción funciona muy bien!fuente
-d path
una vez usando 3.92-BETAr3 o posterior para que puedan ejecutarse.trabajó para mi.
fuente
No reconozco su código en particular, aunque este es un problema común con una nueva versión del sistema operativo (compatibilidad de software heredado).
Primer paso, mira el sitio web de los desarrolladores para ver si van a parchar a Sierra. Es posible que ya hayan publicado un parche beta que no está disponible a través de Actualización de software.
Envíe al desarrollador un correo electrónico preguntándoles directamente. Puede llevarles un tiempo ponerse al día, especialmente si tienen múltiples aplicaciones en múltiples plataformas.
Considere tener una Mac de arranque dual. Generalmente mantengo 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. En realidad, en estos días mantengo una Mac heredada con 10.6 y 10.8 solo por 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, aún no estoy seguro de si se han lanzado emuladores para Sierra.
fuente
El problema ha sido reportado como UPX es muy, muy roto por Darwin 16 / OS X Sierra. # 4 .
Parece que upx 3.92 abordará este problema.
fuente