「Jailbreak」とは、iOS、iPadOS、watchOS、tvOS、audioOS、またはbridgeOSのカーネル(およびAMFI、PAC、PPL、KPP、KTRRなどのその他の保護)を利用して、任意のコード実行(通常はSSHシェルを起動することで)を得るプロセスである。以前は、システムパーティションを「読み書き可能」としてマウントするために、/private/etc/fstab をパッチして行われていた。これはUnlockとは全く異なり、脱獄は、非公式なActivation(Hacktivation)や非公式なUnlockを適用する前に行わなければならない最初のアクションである。
古いJailbreakでは、AFCサービス(iTunesがファイルシステムにアクセスするために使用)を変更して、rootからファイルシステムへの完全なアクセスを提供していた。これには後にAFC2という新しいサービスが作られ、完全なファイルシステムアクセスが可能となった。
現代のJailbreakは、KPPやKTRRによって制約が課せられているため、カーネルを直接パッチするのではなく、カーネルの変数メモリを変更する。checkm8をベースにしたJailbreakはこの限りではない。
注意: 脱獄の合法性は国や地域によって異なり、Wikipediaには、いくつかの国における合法性の概要が記載されている。
Jailbreakの種類
- Tethered(紐付き脱獄): デバイスは毎回コンピューターで起動する必要があり、そうでないと起動しない。このタイプのJailbreakは珍しい。iPod touch 2(新BR)およびiPhone 3GSから、Appleはブートチェーン(LLB、iBoot、Kernel)に署名チェックを施し、これらのチェックをパッチしない限りカスタムブートチェーンを読み込むことができなくなった。例としては4039、blackra1n、orangesn0wなどがある。
- Semi-tethered(半紐付き脱獄): デバイスは毎回コンピューターでJailbreakしなければならず、再起動すると非脱獄状態で起動する。opensn0w、geeksn0w、checkra1n、palera1nなどが半紐付き脱獄Jailbreakの例として挙げられる。これらは、iOSをJailbreakする方法は紐付き脱獄Jailbreakに似ているが、iOSのデフォルトのブートチェーンを変更することなく、独自のカスタムブートチェーンを実行する。
- Untethered(完全脱獄): Untethered Jailbreakは、ほぼすべてのJailbreakが最初はこの方法だった。Jailbreakを一度実行すれば、以後はずっと脱獄状態が維持される。これらはSafariでJailbreakMeを使用したり、コンピュータを使ってredsn0w、Absinthe、Panguなどでインストールできる。しかし、これらのタイプのJailbreakはiOS 9以降、徐々に減少していった。
- Semi-untethered(半紐なし脱獄): iOS 9以降、完全な完全脱獄を作成することが難しくなったため、開発者は代わりに半紐なし脱獄を作成した。これらはアプリを使用してデバイスを脱獄するが、再起動後にはアプリを再度実行しない限り、デバイスは非脱獄状態になる。Home Depot、Meridian、unc0ver、Chimera、Taurine、Dopamineなどがこれに該当する。Appleの制限により、このアプリは毎週(またはApple Developerアカウントを使用して毎年)再署名する必要がある。ReProvision Rebornなどのツールは再署名を自動化するために作成された。また、TrollStoreと互換性のあるiOSバージョンでは、Jailbreakアプリを永続的に署名することができ、期限切れにならないようにすることができる。
脱獄ツール
最新のファームウェアと脱獄
他のデバイス、ファームウェアのバージョン、およびジェイルブレイクツールについては、以下のバージョンリストを参照。
バージョン
完全脱獄または半紐なし脱獄の脱獄は、緑の「yes」で表示される。紐付き脱獄または半紐付き脱獄の脱獄は、黄色のボックスで表示される。Beta Firmwareはリストに含まれていない。
Bootstrap
この種類のユーティリティは、基本的なアプリの調整を実行するために使用できる方法であり、カーネルが読み取り/書き込み不可(パッチが当たっていない)ため、機能全体は非常に制限される。
このタイプのユーティリティに必要なのは、CoreTrustのバグと、そのバグを使って何かをインストールする方法(例えばTrollStore)だけです。
この種類のユーティリティではサポートされていない主なもの
1.完全なtweakのサポート(AppSync UnifiedやSpringboardの調整、デーモンを修正する調整など—これらは一般的にカーネルの読み書きやその他のバイパスを必要とするため動作しない。これが、ElleKitのようなtweak Injectionライブラリが機能しない原因となる。)
2.外部ターミナルの使用(多くのターミナルはカーネルの読み書き方法を使用してセッションを実行するため、基本的にはブートストラップツールで提供される限られたターミナルのみがサポートされる。)
3.カスタムLaunchDaemonsの実行(すべてのデーモン/サービスの実行は、Appleが提供し署名したlaunchdバイナリを通じて行われ、プラットフォームのバイナリのみがその特権で実行できるようになる。ターゲットのバイナリがAppleによって署名されたプラットフォームバイナリでない場合、実行は拒否されてしまう。CoreTrustのバグではこれを悪用できない。なぜなら、カーネルがlaunchdバイナリによって行われる実行をチェックして検証するからである。これは、カーネルを最初にパッチしない限り、このバイナリを直接パッチするとカーネルパニックを引き起こす。)
ブートストラップの利点
1.デバイスはほぼ標準の環境に近く、アプリとの互換性はTrollStoreのみを使用している場合と同様。
2.ほとんどカーネルパニックが発生しない。
半脱獄
KPP、KTRR、PPL、SPTM、TXM、PACによる制限のため、カーネルの読み書き(r/w)のみではarm64eデバイスでの脱獄は実現できない。しかし、CoreTrustのバイパスを使用することで、脱獄の基本機能のほとんどを実装することが可能になる。
標準のブートストラップでは不可能なことが、以下のように可能になる。
1. 大幅に改善されたTweak Injectionのサポート - カーネルのr/wを使用して/sbin/launchdを上書きすることで、launchd内のさまざまなチェックを解除し、ほとんどのカスタムバイナリを実行できるようになる。
2. LaunchDaemonsの使用(これもlaunchd内の制限を解除することによって実現される)。
3. アプリケーションのTweakを、システムアプリとして再登録することなく行うことができる(xpcproxyフックを使用して代替実行ファイルを起動)。