macOS Sierra에서 이전 앱을 시작하려고합니다. El Capitan에서는 제대로 작동했지만 Sierra로 업데이트 한 후 시작시 즉시 오류가 발생합니다.
이 UPX 압축 바이너리에 잘못된 Mach-O 헤더가 포함되어 있으며로드 할 수 없습니다.
El Capitan에서 Homebrew를 사용하여 UPX를 설치하고 바이너리 압축을 풀기 위해 사용했지만 바이너리가 압축되지 않았다는 것을 알려줍니다.
$ 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.
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
Sierra에서이 앱을 열려면 어떻게해야합니까?
답변
수정 된 답변 :
추적을 숨기려면 해적들이 압축 바이너리에서 UPX 마커를 0으로 만들었으므로 macOS Sierra가 바이너리를 압축 해제 할 수 없습니다. (로 시도해보십시오 hexdump -C YourApp.app/Contents/MacOS/YourApp | grep -C 1 UPX
. 출력이 없을 가능성이 큽니다.)
그러나 UPX의 jreiser는이 문제를 해결하고 압축 코드에 대한보다 강력한 검색을 구현하여이 문제를 해결했습니다. v3.92를 사용하여 실행 파일의 압축을 풀 때 이러한 앱을 다시 실행할 수 있습니다 upx -d YourApp.app/Contents/MacOS/YourApp
.
답변
3.92-BETA 개정 3은 Sierra에서 작동하며 i386에서 작동합니다!
https://www.dropbox.com/s/x765t3i42p7hr8b/upx.out?dl=0도 이제 I386에서도 작동합니다.
github.com/upx # 4 코멘트의 jreiser
3.92는 Sierra에서 바이너리를 압축하여 Sierra에서 실행할 수 있도록 지원하고 Sierra에서 바이너리 압축 해제도 지원합니다. 3.92-BETA는 또한 코드 서명과 같이 압축 후 수정 된 압축 해제 바이너리를 지원합니다.
-d
옵션을 사용하여 앱의 바이너리를 압축 해제하면 효과적입니다!
$ 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
나를 위해 일했다.
답변
새로운 OS 릴리스 (레거시 소프트웨어 호환성)와 관련된 일반적인 문제이지만 특히 코드를 인식하지 못합니다.
-
첫 번째 단계는 개발자 웹 사이트에서 Sierra 용으로 패치 할 예정인지 확인하십시오. 소프트웨어 업데이트를 통해 제공되지 않는 베타 패치를 이미 게시했을 수 있습니다.
-
개발자에게 직접 묻는 이메일을 보내십시오. 여러 플랫폼에 여러 응용 프로그램이있는 경우 특히 따라 잡는 데 시간이 걸릴 수 있습니다.
-
듀얼 부팅 Mac 사용을 고려하십시오. 일반적으로 새 OS 설치 후 현재 시스템의 복제본을 다른 드라이브 (또는 파티션)에 보관 한 다음 빠르게 재부팅하고 소프트웨어를 계속 사용할 수 있습니다. 실제로이 지원을 위해 요즘 레거시 Mac을 10.6 및 10.8로 실행합니다.
-
가상 머신을 고려하십시오. OSX에서 에뮬레이터를 사용하고 원하는 OS 버전 (Windows 포함)을 설치할 수 있습니다. 그래도 시에라 용 에뮬레이터가 출시되는지 확실하지 않습니다.