Voorbereiding op de iPhone 3G unlock: hoe werkt het precies?

Op 31 december komt de iPhone 3G unlock van het iPhone Dev Team beschikbaar. Voor iedereen wil weten waarom de unlock zo lang heeft geduurd en hoe de unlock precies werkt, hebben we een uitleg geschreven over het bootproces van de iPhone en de werking van de unlockmethoden voor iPhone 2G en iPhone 3G.
Marco Snels - · Laatst bijgewerkt:

unlockOp 31 december (morgen!) komt er voor het eerst een softwarematige unlock van de iPhone 3G. Het is slim om nu alvast te kijken of je iPhone geschikt is voor de unlock. En als we dan toch over bootloaders en basebands hebben is het meteen een goed idee om eens aandacht te besteden aan het bootproces van de iPhone, de werking van bootneuter en alvast uit te leggen hoe de iPhone 3G unlock precies werkt. Moderator Destiny was zo aardig om alles duidelijk uit te leggen. Let op: enige technische interesse is wel vereist.

De iPhone 3G unlock Yellowsn0w is inmiddels beschikbaar. Lees er alles over in dit nieuwsitem: iPhone 3G unlock yellowsn0w nu beschikbaar via Cydia en Installer

unlockMaar we beginnen makkelijk: nakijken welke firmware en basebandversie er op je iPhone 3G draait. Hiervoor ga je op de iPhone naar: Instellingen > Algemeen > Info. Blader naar beneden dan zie je de firmwareversie (in het voorbeeld 2.2) en de basebandversie (bijvoorbeeld 02.28.00) staan. En da’s nou juist de combinatie die je NIET moet hebben. Heb je de iPhone 3G via iTunes geupdate naar firmware 2.2 zonder daarbij een custom firmware te gebruiken, dan ben je voorlopig nog niet aan de beurt voor een unlock. Staat er bij de basebandversie 02.11.07 dan ben je er helemaal klaar voor. Voor de duidelijkheid: de unlock is alleen bedoeld voor de iPhone 3G en dus niet voor de eerste generatie iPhone (ook wel iPhone 1G of 2G genoemd). Voor die eerdere versies kun je al langere tijd Pwnage en QuickPwn gebruiken.

Het bootproces van de iPhone

Om te begrijpen hoe de iPhone 3G unlock werkt, is het nuttig om iets te weten over het bootproces van de iPhone. Tijdens het opstarten (booten) worden een aantal checks langsgelopen. Als de iPhone wordt aangezet wordt eerst de bootrom uitgelezen. De bootrom is een stukje software dat ‘vastzit’ in de iPhone. De bootrom kun je niet uitlezen en is ook nog niet gedumpt door het openmaken van de iPhone.

Na het uitlezen van de bootrom is de LLB aan de beurt. Dit is een brok software, opgeslagen in de NOR. De NOR is een stukje flashgeheugen in de iPhone dat vooral wordt gebruikt voor het opstarten van de iPhone. Vervolgens wordt de bootloader uitgevoerd vanuit de NOR. De bootloader zorgt voor de connectie met de baseband, het modemgedeelte van de iPhone.

De bootloader heeft twee standen: een normale stand en een servicemode-stand. Bij het opstarten staat deze in de normale stand. Bij het updaten van de baseband, dus bij het updaten of restoren van nieuwe firmware, staat de boatloader in de servicemode-stand. Alleen dan is het mogelijk om de baseband te flashen. De bootloader krijgt een zogenaamde secpack van de image file. De secpad is een soort handleiding voor de bootloader: in de secpack staat precies wat wel en niet is toegestaan en waar de baseband geflasht moet worden. De bootloader controleert eerst de secpack, voordat hij de baseband flasht.

Na de bootloader wordt iBoot geladen uit de NOR. iBoot laadt als eerste de Device Tree. De Device Tree is een stukje software met diverse instellingen, bijvoorbeeld van het LCD-scherm, de flashchip en de Wi-Fi-kalibratie. De componenten die Apple in de iPhone gebruikt, zoals flashchips, LCD-schermen en Wi-Fi-chips, zijn namelijk afkomstig van verschillende fabrikanten en vereisen een verschillende instelling. In de Device Tree staan de juiste instellingen voor de chips en andere componenten.

Als de Device Tree is uitgelezen is de laatste stap aan de beurt: het iPhone OS (het besturingssysteem) wordt opgestart door iBoot. Dit is de laatste fase. Als het iPhone OS is geladen kun je de iPhone gebruiken.

boot

Het unlocken van de iPhone 2G

Bootneuter is een programma dat twee dingen kan doen: je bootloader flashen en de baseband flashen.

Het flashen van de bootloader

De bootloader wordt geladen door de LLB, die op z’n beurt weer wordt geladen door de bootrom. Deze stukjes software worden, voordat ze worden uitgevoerd, eerst gecontroleerd of ze origineel van Apple zijn. Zou je de bootloader willen flashen, dan moet je dus een exploit (bug) vinden om deze controle te omzeilen.

Bij de eerste generatie iPhone (iPhone 2G) is dit vrij simpel: de bootloader wordt namelijk gecontroleerd door de LLB. Maar de LLB wordt op z’n beurt niet gecontroleerd door de bootrom. Dat betekent dus dat je de LLB kan flashen/patchen zonder dat de iPhone 2G stopt met booten.

Nu zul je misschien denken: “Waarom flasht Apple dan niet de bootrom zodat hij wel de LLB kan controleren op echtheid?” Het mooie is dat dit niet kan, omdat de bootrom niet aangepast kan worden als hij eenmaal geflasht en geïnstalleerd is in de iPhone. Apple kan dit dus nooit achteraf fixen.

Bij unlockmethoden voor de iPhone 2G patcht het iPhone Dev Team eerst de LLB, zodat de LLB de bootloader niet controleerd. Daarna hebben ze vrij spel op de bootloader, die ze naar wens kunnen flashen. Je kunt dit vergelijken met het kapen van een trein: ze springen eerst achterop de trein. Daarna kapen ze de laatste wagon. Daarna springen ze op de één na laatste wagon enzovoort.

Het flashen van de baseband (unlocken)

Als je bekend bent met Bootneuter (onderdeel van Pwnage Tool) dan zie je dat automatisch ‘Neuter’ wordt aangevinkt. Het neuteren van de bootloader betekent eigenlijk dat alle beveiligingen uit de bootloader worden gepatcht, zodat de bootloader altijd de baseband flasht. Bij een niet-gehackte bootloader checkt de bootloader eerst de secpack. Bij een geneuterde bootloader negeert hij de secpack en flasht meteen de baseband.

Bootneuter flasht dus eerst de LLB en de bootloader. Daarna hebben ze vrij spel op de baseband en flashen ze een geunlockte baseband op de iPhone 2G. Dit is hoe de unlock voor de iPhone 2G precies werkt.

Het unlocken van de iPhone 3G

Op de iPhone 3G is het niet mogelijk om bootneuter te gebruiken. Op de iPhone 3G wordt namelijk de LLB wél door de bootrom gecontroleerd op echtheid. Aangezien het iPhone Dev team de bootrom (nog) niet kan dumpen, kunnen ze de LLB nog niet patchen. Met als gevolg dat het patchen van de bootloader en baseband ook niet mogelijk is.

Hoe werkt de 3G unlock dan wel? Aangezien het Dev Team de iPhone 3G niet bij het booten kan modificeren (hierboven is uitgelegd waarom), zullen ze een manier moeten vinden om een unlock-commando te ‘injecteren’ tijdens het draaien van het OS. Dit lijkt gemakkelijker gezegd dan gedaan, omdat je niet zomaar commando’s kunt injecteren in een draaidend OS, omdat de kernel continu het iPhone OS controleert. Dit is een herhalende activiteit (loop).

Het Dev Team heeft nu een bug gevonden in de firmware om juist wel een ongesigneerd unlock-command te injecteren in het iPhone OS. Hierdoor wordt de baseband geunlockt tijdens het draaien van de OS.

Het Dev Team hoopt in de toekomst op een dump van de bootrom zodat ze kunnen kijken of er eventueel een bug zit in het bootproces. Als ze dit lukt kan Apple (net zoals bij de eerste generatie iPhone) dit niet meer achteraf fixen.

Hoe werkt een officiële unlock?

Je vraagt je nu misschien nog af hoe het zit bij een officiële unlock, die je bijvoorbeeld door een operator tegen betaling kunt laten uitvoeren. Dit gebeurt via iTunes. Tijdens een synchronisatie met iTunes wordt er een encrypted unlockcode naar de iPhone gestuurd. De code wordt doorgestuurd naar de baseband. In de baseband zit de seczone (stukje software) met daarin: het IMEI nummer, de unlockstatus (ja of nee) en de TEA-code, die bij elke iPhone verschillend is.

De encrypted unlockcode, die is meegestuurd met iTunes, wordt gedecrypt met jouw unieke TEA-code en wordt gevalideerd. De unlockstatus wordt dan op unlocked gezet. Bij elke reboot wordt de seczone uitgelezen en dus ook de unlockstatus. Als de unlockstatus op unlocked staat zal de baseband unlocked worden en wordt elke simkaart geaccepteerd.

De unlockcode is extreem goed beveiligd. Het zelf decrypten van deze unlockcode met je eigen computer zal een aantal maanden of jaren duren. Mocht je de unlockcode toch gedecrypt krijgen, dan heb je er nog heel weinig aan, omdat de unlockcodes continu veranderen en uniek zijn bij elke telefoon.

Heel veel dank aan Destiny voor deze uitleg! Mocht je nog brandende vragen hebben aan Destiny, dan kun je via het forum contact met hem opnemen.

Informatie

Laatst bijgewerkt
27 oktober 2009 om 0:55
Onderwerp
Categorie
Jailbreak

Reacties: 68 reacties

Reacties zijn gesloten voor dit artikel.