Ich versuche, eine ältere App in macOS Sierra zu starten. In El Capitan hat es gut funktioniert, aber seit dem Update auf Sierra stürzt es sofort beim Start mit dem Fehler ab ...
Diese UPX-komprimierte Binärdatei enthält einen ungültigen Mach-O-Header und kann nicht geladen werden.
Mit Homebrew in El Capitan habe ich UPX installiert und es verwendet, um zu versuchen, die Binärdatei zu dekomprimieren, aber dies sagt mir, dass die Binärdatei überhaupt nicht komprimiert ist.
$ 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.
Dies ist das Absturzprotokoll vom Öffnen der App in 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
Wie kann ich diese App in Sierra öffnen?
Überarbeitete Antwort:
Um Spuren zu verbergen, haben Piraten die UPX-Marker aus der komprimierten Binärdatei auf Null gesetzt, sodass es macOS Sierra nicht möglich ist, die Binärdatei zu dekomprimieren. (Versuchen Sie es mit: hexdump -C YourApp.app/Contents/MacOS/YourApp | grep -C 1 UPX
und sehen Sie, dass höchstwahrscheinlich keine Ausgabe erfolgt.)
jreiser von UPX nahm die Herausforderung jedoch an und ging dieses Problem an, indem es eine robustere Suche nach komprimiertem Code implementierte. v3.92 wird es möglich sein, diese Apps wieder zum Laufen zu bringen, wenn die ausführbaren Dateien mit dekomprimiert werden upx -d YourApp.app/Contents/MacOS/YourApp
.
3.92-BETA Revision 3 funktioniert in Sierra und funktioniert für i386!
https://www.dropbox.com/s/x765t3i42p7hr8b/upx.out?dl=0 funktioniert jetzt auch für I386.
jreiser auf github.com/upx #4 Kommentar
3.92 unterstützt das Komprimieren von Binärdateien in Sierra, sodass sie in Sierra ausgeführt werden können, und unterstützt auch das Dekomprimieren von Binärdateien in Sierra. 3.92-BETA unterstützt auch das Dekomprimieren von Binärdateien, die nach der Komprimierung geändert wurden, z. B. mit einer Codesignatur.
Das Dekomprimieren der Binärdatei der App mit der -d
Option funktioniert hervorragend!
$ 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.
brew install upx
upx -d YourApp.app/Contents/MacOS/YourApp
hat für mich funktioniert.
Ich erkenne Ihren Code insbesondere nicht, obwohl dies ein häufiges Problem bei einer neuen Betriebssystemversion ist (Legacy-Software-Kompatibilität).
Schauen Sie im ersten Schritt auf der Entwickler-Website nach einem Hinweis, dass sie für Sierra patchen werden. Sie haben möglicherweise bereits einen Beta-Patch veröffentlicht, der nicht über das Software-Update verfügbar ist.
Senden Sie dem Entwickler eine E-Mail, in der Sie ihn direkt fragen. Es kann eine Weile dauern, bis sie aufgeholt haben, insbesondere wenn sie mehrere Anwendungen auf mehreren Plattformen haben.
Erwägen Sie einen Dual-Boot-Mac. Im Allgemeinen behalte ich nach einer neuen Betriebssysteminstallation einen Klon meines aktuellen Systems auf einem anderen Laufwerk (oder einer anderen Partition), dann kann ich schnell neu starten und die Software weiter verwenden. Ich betreibe heutzutage tatsächlich einen Legacy-Mac mit 10.6 und 10.8 nur für diese Unterstützung.
Betrachten Sie eine virtuelle Maschine. Sie können einen Emulator unter OSX verwenden und die von Ihnen bevorzugte Betriebssystemversion (einschließlich Windows) installieren. Ich bin mir jedoch nicht sicher, ob Emulatoren für Sierra bereits veröffentlicht wurden.
Das Problem wurde gemeldet, da UPX von Darwin 16 / OS X Sierra völlig zerstört wurde. #4 .
Es sieht so aus, als würde upx 3.92 dieses Problem beheben.
ɹoƃı
l'l'l
grg