iOS앱 실행에러

2025. 11. 9. 18:36모바일 앱 해킹 및 보안/iOS

 

아래는 iPhone 단말기에서 추출한 시스템 로그 중 일부임.

Nov  9 17:40:13 Someone's-iPhone SpringBoard(FrontBoard)[1219] <Error>: Bootstrapping failed for <FBApplicationProcess: 0x152b82330; application<cohttp://m.xxx.test.wow>:<invalid>> with error: <NSError: 0x2802547b0; domain: RBSRequestErrorDomain; code: 5; reason: "Launch failed."> {
    NSUnderlyingError = <NSError: 0x280254f90; domain: NSPOSIXErrorDomain; code: 85>;
}

 

결론부터 말하면, OS가 “대상 앱 프로세스를 띄우기도 전에 거부해서” 그냥 홈으로 튕겨버린 상황이에요.

핵심 포인트부터 말하면:

  • RBSRequestErrorDomain; code: 5; reason: "Launch failed." → SpringBoard/FrontBoard가 “이 앱 프로세스는 못 띄우겠다” 하고 중간에서 막은 것.
  • NSPOSIXErrorDomain; code: 85 → iOS 쪽에서 이 코드를 거의 항상 “Bad executable (or shared library)” 로 찍어요. 즉 “실행파일이거나 붙여야 할 라이브러리가 마음에 안 든다”는 뜻입니다. 이건 애플 개발자 포럼/깃허브에서도 똑같이 뜨는 패턴이라서 맞는 해석입니다. 

탈옥 환경에서 이게 특히 잘 나는 이유가 몇 가지 정해져 있습니다. 아래에서 하나씩 볼게요.

  1. 앱 번들에 탈옥 트윅이 강제로 주입되면서 코드서명이 깨진 경우
    - 모든 앱에 무조건 주입하는 트윅(SSL 우회, Frida gadget, 덤프 툴, 광고 제거 등)이 있으면, 일부 앱은 “이런 라이브러리는 못 로드해” 하고 AMFI/launchd 단계에서 거절합니다.
    - 그럼 아직 앱 main()도 안 들어갔는데 SpringBoard가 “Bootstrap failed”를 찍고 끝. 지금 로그가 딱 그 모양이에요. 
    GitHub
  2. IPA를 손으로 넣었거나(Filza/SCP), 재서명한 앱이 현재 iOS·기기랑 안 맞는 경우
    - 권한/소유자/실행 비트가 이상하거나,
    - 포함된 .dylib이나 .framework가 다시 안 서명돼 있거나,
    - 오래된 툴로 재서명해서 최신 iOS가 싫어하면 code 85로 튕깁니다. 이런 보고도 같아요. 
  3. iOS가 “이 서명/프로파일은 이 디바이스에서 허용 안 한다”라고 한 경우
    - 애플 포럼에도 iOS 업데이트 뒤에 기업용/MDM 빌드가 딱 이 에러로 안 떠버린 사례가 있어요. 서명 프로파일을 Xcode로 바로 설치한 빌드는 되는데 배포판은 안 되는 식이죠. 탈옥 상태에서 서명 우회 트윅과 충돌하면 더 잘 납니다. 
  4. 해당 앱이 루트리스/최신 환경에서 안 되는 오래된 트윅이랑만 부딪힌 경우
    - 최근 루트리스 계열 탈옥에서 “모든 앱에 주입”을 켜두면 일부 정식 앱이 이렇게 바로 죽습니다.

해결방법

  1. 해당 앱만 트윅 주입 끄기
    - 설치된 트윅 중에 per-app으로 비활성화할 수 있는 게 많아요.
    - 대상 앱에서 전부 OFF 하고 다시 실행해보세요. 이게 제일 많이 먹힙니다.
  2. 앱을 완전히 지웠다가 App Store에서 다시 받기
    - 수동으로 깔았거나 패치된 걸 넣었다면 그대로는 계속 Bad executable로 죽을 수 있어요. 순정 소스에서 다시 받으면 번들 권한/서명이 정상으로 돌아옵니다. (AppSync 류가 있으면 잠깐 끄고 설치)
  3. 최근에 깐 시스템 전체 주입 트윅을 하나씩 꺼보기
    - “설치하고 나서부터 이 앱만 안 켜진다” 싶은 게 있으면 그게 범인일 확률이 큼.
    - 특히 TLS 우회, Frida 관련, 덤프/디크립트, 광고 제거 같이 모든 프로세스에 들어가는 것부터 끄세요.
  4. (수동 설치한 IPA라면) 다시 제대로 재서명
    - TrollStore나 Sideloadly 쪽에서 최신 툴로 다시 서명해서 넣어보세요.
    - 안에 포함된 extension / framework도 같이 서명돼야 하고, 퍼미션도 755로 맞아야 합니다. 안 그러면 launchd가 “실행 불가”로 바로 85 던집니다. 
  5. 그래도 안 되면 콘솔에서 바로 위 로그까지 보기
    - 지금 올려준 로그 바로 위에 AMFI나 CodeSignature 관련 에러 한 줄이 더 있을 가능성이 높아요. 거기에 “profile refused”, “bad code signature”, “dylib … not valid” 같은 게 있으면 그게 진짜 원인입니다. iOS 18 계열에서도 이런 식으로 서명 거절 후에 똑같이 터져요.