iOS는 기본적으로 다운그레이드될 수 없습니다. 하지만 여러분이 보듯이 사람들이 SHSH2 Blob를 저장했다면 Apple의 사이닝 서버가 더 이상 작동되지 않는 경우에도 다운그레이드를 시도할 수 있습니다.


환경

오늘 시도해볼 기기는 제가 소지하고 있는 iPhone 8 256GB 기종입니다.

  • iOS 13.6.1 to iOS 13.5

시작하기 전에 여러분이 만약 iOS 13.5.1 혹은 더 상위 버전이 설치된 iOS 기기가 있다면 현재 상황에서 탈옥(Jailbreak)이 불가능하기 때문에 ApBootNonce 값을 직접 지정할 수 없어 기기를 수없이 많이 재부팅하여 무작위로 설정되는 값을 맞추어야 합니다.

사전 준비 사항

  • iOS 13.5 펌웨어
  • iOS 13.5 SHSH2 Blob (Null generator)

SHSH2 Blob는 기기마다 고유한 ID와 칩셋 버전별 Generator 값 통하여 Apple 사이닝 서버에서 생성되기 때문에 아무 Blob나 다운로드받아서 사용할 수 없습니다.

Jailbreak

먼저 기기를 탈옥하여 ApBootNonce 값을 저희가 원하는 Null generator 값으로 고정시켜줍니다. 그래야 이후에 잘못된 SHSH2 Blob를 사용하는 일을 최소화할 수 있습니다. 저와 같은 경우에는 이미 iOS 13.5보다 높은 버전에 있으므로 iOS 13.6에서 현재 유일하게 작동하는 Checkra1n을 사용하겠습니다.

Ubuntu 설치 디스크 만들기

저는 Mac/Linux 환경이 아니기 때문에 임시적인 차원에서 Ubuntu 디스크를 만들고 다음 단계로 넘어갈 것입니다.

Rufus - The Official Website (Download, New Releases)
Rufus is a small application that creates bootable USB drives, which can then be used to install or run Microsoft Windows, Linux or DOS. In just a few minutes, and with very few clicks, Rufus can help you run a new Operating System on your computer...

위의 Rufus 웹 사이트에서 최신 버전의 Rufus를 다운로드하세요.

Get Ubuntu | Download | Ubuntu
Download Ubuntu desktop, Ubuntu Server, Ubuntu for Raspberry Pi and IoT devices, Ubuntu Core and all the Ubuntu flavours. Ubuntu is an open-source software platform that runs everywhere from the PC to the server and the cloud.

또 Ubuntu 이미지를 다운로드하셔야 하는데 버전 자체는 너무 낮지만 않으면 상관이 없습니다. 하지만 타 배포판에서는 Checkra1n이 추가 작업을 통해 작동하는 경우도 있으므로 귀찮음을 최소화하기 위해서 Ubuntu를 선택했습니다.

저와 같은 경우에는 느린 USB 대신 CTRL + ALT + F 키조합을 사용하여 외장 하드를 표시시킨 다음 외장하드에 설치하도록 하겠습니다. 대략 1분 정도면 완료됩니다.

Checkra1n 설치하기

이제 Ubuntu로 부팅을 한 다음 Try Ubuntu 버튼을 통해 바로 데스크톱으로 진입한 후에 Checkra1n을 설치합니다. 자세한 설치 명령어는 Checkra1n 공식 웹 사이트에서 찾으실 수 있습니다.

checkra1n
Jailbreak for iPhone 5s through iPhone X, iOS 12.3 and up

Checkra1n이 설치되면 기본적으로 13.6 혹은 그 이상 버전은 아직 완전하게 테스트가 진행되지 않았기 때문에 Start 버튼이 비활성화되어 있습니다. 이 때에는 Options 탭을 먼저 진입해주세요.

그 다음 Allow untested iOS/iPadOS/tvOS versions 옵션을 활성화해주시면 됩니다.

그런 다음 Start 버튼을 누르고 절차에 따르면 대부분은 한 번에 완료됩니다.

만약 위 단계에서 너무 오래걸린다면 다른 USB 포트를 사용해보시거나 iOS 기기에서 연결된 컴퓨터를 신뢰했는지 등의 여부를 확인해주세요.

ApBootNonce 설정하기

보통의 경우 정상적으로 Checkra1n이 기기에 설치되었다면 홈화면에서 Checkra1n Loader 앱을 찾으실 수 있습니다. 여기에서 Cydia를 먼저 설치해주세요.

그런 다음 중요 업데이트를 설치합니다. Checkra1n에서는 아직 최신 버전의 Cydia를 설치해주지 않는 것 같네요.

기본적으로는 오래된 버전의 System Info 트윅이 보여지기 때문에 직접 개발자의 저장소를 추가하여 iOS 13을 지원하는 최신 버전의 System Info 트윅을 설치합니다.

정상적인 설치 이후 기기를 리스프링하면 설정 앱의 정보 탭에서 더 많은 정보가 표시되고 Boot-nonce 값을 살짝 왼쪽으로 밀어 새로운 Nonce 값을 설정할 수 있습니다.

이제 이 값을 기본값인 0x1111111111111111으로 설정합니다. 혹은 여러분이 소유하고 계신 SHSH2 Blob의 값으로 설정하시면 됩니다. 하지만 대부분의 SHSH2 Blob 저장소는 자동으로 위 Nonce로도 저장을 해주기 때문에 TSS Saver나 SHSH.host와 같은 웹 사이트를 사용하셨다면 대부분 해당 값을 사용하실 수 있을 것입니다.

이제 기기에서 해야 할 일은 모두 끝냈습니다.

Futurerestore 준비하기

이제 다시 PC로 돌아와주세요. 몇 가지 준비물을 다운로드받아야 하는데 되도록 한 폴더에 넣어주시는 것이 좋습니다.

iRestore 다운로드

Futurerestore를 실행하기 위해서는 몇 가지 준비물이 필요한데 저희는 Windows에서 iRestore라는 도구를 통하여 실제로는 커맨드 라인을 사용하지 않은채로 진행하겠습니다.

[Release] iRestore: Windows GUI for futurerestore from jailbreak

먼저 iRestore를 다운로드해줍니다. iRestore를 통해 자동으로 최신 버전의 Futurerestore를 다운로드하고 GUI로 파일 경로를 보다 안전하게 지정할 수 있습니다.

iOS 펌웨어 다운로드

그 다음으로 해주어야 할 일은 iOS 펌웨어를 다운로드받는 것입니다. 아래 웹 사이트에서 여러분의 기기를 선택한 다음 다운그레이드할 버전을 다운로드하세요.

Download iOS Firmware for iPhone, iPad, iPod Touch, Apple Watch, Apple TV and HomePod / IPSW Downloads
Download current and previous versions of Apple’s iOS, iPadOS, watchOS, tvOS and audioOS firmware and receive notifications when new firmwares are released.

SEP/Baseband/BuildManifest 파일 다운로드

SEP과 Baseband 파일과 같은 경우에는 호환되는 가장 최신 버전의 펌웨어 파일에서 추출하는 것이 보다 안전합니다. Google에서 검색하여 호환되는 버전을 찾아주시면 아래와 같은 글을 찾으실 수 있다면 호환되는 것으로 볼 수 있겠습니다. 호환되는 가장 최신 버전의 iOS 펌웨어를 다운로드받아주세요.

[News] 13.6 SEP is still compatible with 13.4 and up! from jailbreak

SHSH2 Blob 다운로드

마지막으로 미리 저장된 SHSH2 Blob를 다운로드해줍니다. 저는 주로 shsh.host를 사용하는데 Find my 탭에서 자신의 ECID를 선택하고 다운그레이드할 버전을 선택하시면 됩니다. 그리고 여기에서 필요한 0x1... generator로 생성된 SHSH2 파일을 다운로드받습니다.

그럼 기본적으로 아래와 같은 파일들이 필요하게 됩니다.

  • iRestore
  • 다운그레이드할 iOS 펌웨어
  • SEP이 호환되는 최신 버전의 iOS 펌웨어
  • 다운그레이드할 버전의 SHSH2 Blob

Futurerestore로 다운그레이드하기

이제 필요한 것들은 모두 다운로드되었습니다.

SEP/Baseband/BuildManifest 추출하기

호환되는 최신 버전의 펌웨어에서 추출합니다.

아래와 같이 7-Zip으로 간단히 펌웨어 파일을 열어줍니다.

그리고 Jailbreak Bot의 /sepbb 명령어를 통해 파일의 위치를 확인합니다.

먼저 펌웨어 파일을 열면 바로 BuildManifest 파일을 보실 수 있습니다.

그 다음, SEP 파일의 압축을 해제해줍니다.

마지막으로 Baseband 파일을 압축해제해줍니다.

다운그레이드

최종적으로 아래와 같은 파일이 준비되어야 합니다.

그리고 iRestore를 실행하고 올바른 파일을 선택해줍니다.

  • IPSW: 다운그레이드할 버전 (13.5)
  • SEP: 호환되는 최신 버전의 펌웨어에서 추출 (13.6)
  • Build manifest: 호환되는 최신 버전의 펌웨어에서 추출 (13.6)
  • SHSH2 Blob: 특정 Generator의 다운그레이드할 버전으로 다운로드 (13.5, 0x1...)
  • Baseband: 호환되는 최신 버전의 펌웨어에서 추출 (13.6)

문제 해결하기

Windows에서는 아직 드라이버가 완전하지 않은 관계로 아래와 같이 iBEC 에러 등이 나오게 됩니다. 에러의 종류에 따라서 하드웨어 등의 오류가 아닌 경우(잘못된 SHSH2 파일 등)에는 아래 과정이 도움이 되지 않습니다.

이 경우에는 장치 관리자를 열고 기존 Apple의 USB 드라이버를 제거하는 것으로 계속할 수 있습니다. 저도 이 과정에 대해서는 왜 가능한지 의문점이 큽니다.

그 다음 기기를 다시 연결하고 다시 iRestore를 시작하고 같은 설정으로 계속 다시시도합니다. 순서대로 -8과 -10 에러가 해결될 것입니다.