J'essaie de lancer une ancienne application dans macOS Sierra. Cela a bien fonctionné dans El Capitan, mais depuis la mise à jour de Sierra, il se bloque immédiatement au lancement avec l'erreur…
Ce binaire compressé UPX contient un en-tête Mach-O non valide et ne peut pas être chargé.
En utilisant Homebrew dans El Capitan, j'ai installé UPX et l'ai utilisé pour essayer de décompresser le binaire, mais cela me dit que le binaire n'est pas compressé en premier lieu.
$ 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.
Ceci est le journal des pannes de l'ouverture de l'application dans 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
Comment puis-je ouvrir cette application dans Sierra?
Réponses:
Réponse révisée:
Pour masquer les traces, les pirates ont mis à zéro les marqueurs UPX du binaire compressé, il n'est donc pas possible pour macOS Sierra de décompresser le binaire. (Essayez avec:
hexdump -C YourApp.app/Contents/MacOS/YourApp | grep -C 1 UPX
et voyez qu'il n'y a probablement pas de sortie.)Cependant, jreiser de UPX a accepté le défi et a résolu ce problème en implémentant une recherche plus robuste de code compressé. v3.92 sera possible de faire fonctionner à nouveau ces applications lors de la décompression des exécutables avec
upx -d YourApp.app/Contents/MacOS/YourApp
.la source
3.92-BETA révision 3 fonctionne dans Sierra et fonctionne pour i386!
jreiser sur github.com/upx # 4 commentaire
3.92 prend en charge la compression des fichiers binaires dans Sierra afin qu'ils puissent être exécutés dans Sierra, et prend également en charge la décompression des fichiers binaires dans Sierra. 3.92-BETA prend également en charge la décompression des fichiers binaires qui ont été modifiés après la compression, comme avec une signature de code.
La décompression du binaire de l'application en utilisant l'
-d
option fonctionne très bien!la source
-d path
une fois avec 3.92-BETAr3 ou plus tard pour pouvoir être exécutés.travaillé pour moi.
la source
Je ne reconnais pas votre code en particulier, bien qu'il s'agisse d'un problème courant avec une nouvelle version du système d'exploitation (compatibilité logicielle héritée).
Première étape, consultez le site Web des développeurs pour savoir s'ils appliqueront des correctifs pour Sierra. Ils ont peut-être déjà publié un correctif bêta qui n'est pas disponible via la mise à jour logicielle.
Envoyez un e-mail au développeur pour lui demander directement. Il peut leur falloir un certain temps pour rattraper leur retard, en particulier s'ils ont plusieurs applications sur plusieurs plates-formes.
Pensez à avoir un Mac à double démarrage. Je garde généralement un clone de mon système actuel sur un autre lecteur (ou partition) après une nouvelle installation du système d'exploitation, puis je peux rapidement redémarrer et continuer à utiliser le logiciel. En fait, je garde un Mac hérité de nos jours en 10.6 et 10.8 uniquement pour ce support.
Prenons une machine virtuelle. Vous pouvez utiliser un émulateur sur OSX et installer la version du système d'exploitation que vous préférez (y compris Windows). Je ne sais pas encore si des émulateurs sont disponibles pour Sierra.
la source
Le problème a été signalé, car UPX est très différent de Darwin 16 / OS X Sierra. # 4 .
Il semble que upx 3.92 résoudra ce problème.
la source