IBoot
iBoot (Bootloader)
[edit | edit source]iBoot, également appelé « iBoot second-stage loader » dans le code source, est le bootloader de stade 2 d'Apple pour tous les appareils. Il exécute ce qui est connu sous le nom de Recovery Mode. Il dispose d'une interface interactive qui peut être utilisée via USB ou série.
Extraction et désassemblage
[edit | edit source]Pour extraire le bootloader et le désassembler avec IDA :
- Obtenez le bootloader à partir de l'IPSW. Ce fichier se trouve dans le sous-répertoire
Firmware/all_flash, par exempleFirmware/all_flash/all_flash.n81ap.production/iBoot.n81ap.RELEASE.img3, où "n81ap", "k90", etc., correspondent au type d'i-Device. - Exécutez xpwntool avec la clé appropriée.
- Assurez-vous que le décryptage a réussi – si c'est le cas, vous devriez voir le texte suivant en affichant le fichier :
"iBoot for ...., Copyright 2011, Apple Inc."
- Chargez-le dans IDA. Définissez le processeur sur ARM. Rebasez le programme (Edit → Segments → Rebase Program) à 0x5FF00000 (pour iBoot dans iOS 5). Vous devriez voir quelque chose comme :
ROM:5FF00000 loc_5FF00000 ; CODE XREF: ROM:5FF00078↓j
ROM:5FF00000 B loc_5FF00040 ; Used for Reset - This is where we start
ROM:5FF00004 ; ---------------------------------------------------------------------------
ROM:5FF00004 LDR PC, =sub_5FF16FB4 ; Used for Undef
ROM:5FF00008 ; ---------------------------------------------------------------------------
ROM:5FF00008 LDR PC, =sub_5FF16FEC ; Used for SWI
ROM:5FF0000C ; ---------------------------------------------------------------------------
ROM:5FF0000C LDR PC, =sub_5FF17024 ; Used for Prefabt
ROM:5FF00010 ; ---------------------------------------------------------------------------
ROM:5FF00010 LDR PC, =sub_5FF17060 ; Used for DataAbt
ROM:5FF00014 ; ---------------------------------------------------------------------------
ROM:5FF00014 LDR PC, =loc_5FF17098 ; Used for AddrExc
ROM:5FF00018 ; ---------------------------------------------------------------------------
ROM:5FF00018 LDR PC, =loc_5FF17098 ; Used for IRQ
ROM:5FF0001C ; ---------------------------------------------------------------------------
ROM:5FF0001C LDR PC, =loc_5FF17098 ; Used for FIQ
ROM:5FF00020 ; ---------------------------------------------------------------------------
Versions
[edit | edit source]Voici une liste des versions d'iBoot, organisées par numéro de version et build d'iOS. Notez que les versions listées couvrent une large gamme d'iOS, de 1.0 à 12.1 (RC).
| Nom du fichier | Version d'iOS | Build | Numéro de version interne |
|---|---|---|---|
| iBoot-1940.1.3 | 5.0 beta | 9A5220p | |
| iBoot-1940.1.4 | 5.0 beta 2 | 9A5248d | |
| iBoot-1940.3.1 | 5.0 beta 3 | 9A5259f | |
| iBoot-1940.3.5 | 5.0 beta 4 | 9A5274d | |
| iBoot-1940.3.5 | 5.0 beta 5 | 9A5288d | |
| iBoot-1940.3.5 | 5.0 beta 6 | 9A5302b | |
| iBoot-1940.3.5 | 5.0 beta 7 | 9A5313e | |
| iBoot-1940.3.5 | 5.0 GM | 9A334 | |
| iBoot-1940.3.5 | 5.0 | 9A334 | |
| iBoot-1940.3.5 | 5.0.1 beta | 9A402 | |
| iBoot-1940.3.5 | 5.0.1 beta 2 | 9A404 | |
| iBoot-1940.3.5 | 5.0.1 beta 3 | 9A405 | |
| iBoot-1940.3.5 | 5.0.1 | 9A405 | |
| iBoot-1940.10.51 | 5.1 beta | 9B5117b | |
| iBoot-1940.10.54 | 5.1 beta 2 | 9B5127c | |
| iBoot-1940.10.57 | 5.1 beta 3 | 9B5141a | |
| iBoot-1940.10.58 | 5.1 | 9B206 | |
| iBoot-1940.10.58 | 5.1.1 | 9B206 | |
| ... | ... | ... | ... |
| iBoot-7429.0.72.0.3~559 | 12.0 beta | 21A5248p | |
| iBoot-7429.0.133.121.1~6 | 12.0 beta 2 | 21A5268h | |
| iBoot-7429.0.181.131.1~5 | 12.0 beta 3 | 21A5284e | |
| iBoot-7429.0.207.141.1~4 | 12.0 beta 4 | 21A5294g | |
| iBoot-7429.30.8.0.4~161 | 12.0 beta 5 | 21A5304g | |
| iBoot-7429.40.38~32 | 12.0 beta 6 | 21A5506j | |
| iBoot-7429.40.68~75 | 12.0 beta 7 | 21A5522h | |
| iBoot-7429.40.84.181.1~3 | 12.0 beta 8 | 21A5534d | |
| iBoot-7429.40.92.0.5~11 | 12.0 beta 9 | 21A5543b | |
| iBoot-7429.41.4~21 | 12.0 beta 10 | 21A5552a | |
| iBoot-7429.30.65 | 12.0 | 21A344 | |
| iBoot-7429.41.4~25 | 12.0.1 RC | 21A558 | |
| iBoot-7429.41.5~1 | 12.0.1 RC 2 | 21A559 | |
| 12.0.1 | |||
| iBoot-7429.60.27.0.1~107 | 12.1 beta | 21C5021h | |
| iBoot-7429.60.41~118 | 12.1 beta 2 | 21C5031d | |
| iBoot-7429.60.47~12 | 12.1 beta 3 | 21C5039b | |
| iBoot-7429.61.2~16 | 12.1 beta 4 | 21C5045a | |
| iBoot-7429.61.2~18 | 12.1 RC | 21C51 |
(Note : La liste complète des versions est étendue et couvre de nombreuses builds d'iOS. Pour des raisons de concision, seuls quelques exemples sont présentés ici. Consultez la source originale pour la liste exhaustive.)
Conclusion
[edit | edit source]iBoot est un composant essentiel du processus de démarrage des appareils Apple, gérant le mode de récupération et offrant une interface interactive pour le débogage et la restauration. Son extraction et son désassemblage permettent aux chercheurs et développeurs d'analyser en profondeur le fonctionnement du bootloader. Avec des versions évoluant en parallèle des mises à jour d'iOS, iBoot reflète les avancées en sécurité et en performance d'Apple.
Pour plus d'informations, consultez The Apple Wiki.