De iPhone 3G, iPhone 3GS en de iPhone 4 zijn op het moment van schrijven allemaal in meer of mindere mate te jailbreaken op iOS 4.x. In dit artikel wordt eerst een uitleg gegeven over de belangrijkste termen op het gebied van jailbreaken. Vervolgens wordt in dit artikel een overzicht gegeven van de (on)mogelijkheden met betrekking tot het jailbreaken van de iPhone 3G, iPhone 3GS en iPhone 4 op iOS 4.0 tot en met iOS 4.2.1.
Algemene informatie over jailbreaken
In het algemeen kan er een onderscheid gemaakt worden tussen drie verschillende type jailbreaks. Afhankelijk van in welke mate (en op welk moment) de beveilingsschakels van de iPhone kunnen worden omzeild zal dit resulteren in een tethered, semi-tethered of untethered jailbreak. In het geval van een tethered jailbreak zul je deze elke keer dat je het toestel opnieuw op wilt starten moeten verbinden met een computer. Bij een semi-tethered jailbreak kan het toestel na het uitvoeren van een jailbreak ook zonder tussenkomst van een computer worden opgestart, zonder dat de aanpassingen aan het bestandssysteem kunnen worden gebruikt. De meeste gebruikers wachten daarom vaak op een untethered jailbreak, waarbij je het toestel nooit met een computer hoeft te verbinden om deze op te starten.
Een ander belangrijk punt met betrekking tot jailbreaken is de mogelijkheid om te kunnen herstellen met een oudere firmwareversie. Herstellen met een oudere firmware kan interessant zijn om gebruik te maken van de mogelijkheden op het gebied van jailbreaken van een bepaalde firmware. Apple maakt het gebruikers in principe onmogelijk om op de reguliere wijze te kunnen herstellen met een oudere firmware, maar door de unieke handtekening op te slaan van een bepaalde firmwareversie met Cydia of TinyUmbrella zul je ook op een later moment met die firmwareversie kunnen herstellen.
Jailbreaken van de iPhone 3G
De iPhone 3G is pwned for life, dat wil zeggen dat er zich een kwetsbaarheid in de bootrom bevindt die niet softwarematig door Apple te patchen is. Als gevolg daarvan zal de iPhone 3G altijd te jailbreaken zijn. Het lijkt er op dat iOS 4.3 geen ondersteuning meer zal bieden voor de iPhone 3G, waardoor het kat-en-muis-spel voor dit toestel definitief ten einde zal komen. Dit zou betekenen dat naast het jailbreaken ook het unlocken van de iPhone 3G definitief mogelijk zal blijven, dankzij de in dit artikel beschreven methode.
- iOS 4.0 & 4.0.1: een iPhone 3G op iOS 4.0 en 4.0.1 is bijzonder eenvoudig en bovendien direct vanaf het toestel untethered te jailbreaken met behulp van JailbreakMe.
- iOS 4.0.2: een iPhone 3G op iOS 4.0.2 is untethered te jailbreaken met behulp van redsn0w 0.9.6.
- iOS 4.1: een iPhone 3G op iOS 4.1 is untethered te jailbreaken met behulp van redsn0w 0.9.6.
- iOS 4.2.1: een iPhone 3G op iOS 4.2.1 is untethered te jailbreaken met redsn0w 0.9.6.
Jailbreaken van de iPhone 3GS
De situatie bij de iPhone 3GS ligt iets lastiger dan bij de iPhone 3G. De eerste versie van de iPhone 3GS was ook kwetsbaar voor een untethered bootrom-exploit, maar in oktober 2009 heeft Apple deze in iPhones 3GS die sindsdien zijn geproduceerd gepatcht. Voor de iPhone 3GS geldt dan ook dat oudere iPhones (met iBoot-359.3) kwetsbaar zijn voor de untethered (24kpwn) bootrom-exploit en nieuwere iPhones (met iBoot-359.3.2) alleen voor de tethered (limera1n) bootrom-exploit. Je kunt met behulp van deze handleiding op Mac OS X of Windows achterhalen of je de oude of de nieuwe bootrom hebt op je iPhone 3GS. De bootrom-exploit limera1n kan op de nieuwere iPhones 3GS per firmware gecombineerd worden met een nieuwe (kernel) exploit, om alsnog een untethered jailbreak van het toestel te bereiken.
- iOS 4.0 & 4.0.1: een iPhone 3GS op iOS 4.0 en 4.0.1 is bijzonder eenvoudig en bovendien direct vanaf het toestel te untethered te jailbreaken met behulp van JailbreakMe.
- iOS 4.0.2: een iPhone 3GS op iOS 4.0.2 is untethered te jailbreaken met behulp van limera1n RC1b.
- iOS 4.1: een iPhone 3GS op iOS 4.1 is untethered te jailbreaken met behulp van limera1n RC1b of met greenpois0n RC4.
- iOS 4.2.1: een iPhone 3GS is op iOS 4.2.1 te jailbreaken met redsn0w 0.9.6. De jailbreak is untethered op een iPhone 3GS met de oude bootrom en tethered op een iPhone 3GS met de nieuwe bootrom.
Jailbreaken van de iPhone 4
Net als de nieuwere versies van de iPhone 3GS is de iPhone 4 kwetsbaar voor de limera1n bootrom-exploit. Deze tethered bootrom-exploit wordt sinds iOS 4.1 gebruikt en kan per firmware gecombineerd worden met een nieuwe (kernel) exploit om alsnog een untethered jailbreak te bereiken. Voor iOS 4.1 is er een dergelijke kernel-exploit beschikbaar en deze firmwareversie kan dan ook untethered gejailbreakt worden. Momenteel wordt er geëxperimenteerd met methodes om de kernel van iOS 4.1 of iOS 4.2b3 (waar de kernel-exploit ook in aanwezig was) her te gebruiken op iOS 4.2.1, om ook op de laatste firmwareversie een untethered jailbreak te bereiken op de iPhone 4.
- iOS 4.0 & 4.0.1: een iPhone 4 op iOS 4.0 en 4.0.1 is bijzonder eenvoudig en bovendien direct vanaf het toestel te untethered te jailbreaken met behulp van JailbreakMe.
- iOS 4.0.2: een iPhone 4 op iOS 4.0.2 is untethered te jailbreaken met behulp van limera1n RC1b.
- iOS 4.1: een iPhone 4 op iOS 4.1 is untethered te jailbreaken met behulp van limera1n RC1b of met greenpois0n RC4.
- iOS 4.2b3 én 4.2.1: een iPhone 4 is op iOS 4.2.1 untethered te jailbreaken met Jailbreak Monte via redsn0w 0.9.7b6, maar alleen als je (als App Store ontwikkelaar) toegang hebt tot het firmwarebestand en de voor jouw toestel unieke handtekening van iOS 4.2 beta 3.
- iOS 4.2.1: een iPhone 4 is op iOS 4.2.1 tethered te jailbreaken met redsn0w 0.9.6.
Verklarende woordenlijst
- Bootrom: de bootrom is de eerste code die er na het aanzetten van de iPhone, iPod touch, iPad en Apple TV wordt gedraaid en is in die zin vergelijkbaar met de BIOS van een computer. De bootrom is echter read-only en kan dus niet softwarematig door Apple gepatcht worden als er zich een kwetsbaarheid in bevindt. De bootrom vormt de eerste schakel in de chain of trust van een iDevice. In de DFU-modus wordt eerst de bootrom geïnitialiseerd en kan je vervolgens met een (gesigneerde) firmware herstellen. Als een iDevice in de normale modus wordt gestart, controleert de bootrom de LLB en start deze vervolgens.
- LLB: de Low Level Bootloader is de volgende stap in het opstartproces van een iDevice. De LLB heeft een aan de bootrom vergelijkbare functie en overschijft de bootrom in het RAM geheugen, waardoor het reverse engineeren van de bootrom wordt bemoeilijkt. Vervolgens controleert en start de LLB de volgende stap in het opstartproces: iBoot.
- iBoot: is de derde en meest gecompliceerde stap in het opstartproces. iBoot biedt de mogelijkheid voor recovery mode, laadt de kernel van iPhone OS en ook de device tree. iBoot controleert daarnaast de communicatie via de recovery modus en naar de kernel.
- Kernel: de kernel vormt de kern van het besturingssysteem en zal over het algemeen per firmwareversie verschillen. Een recente ontwikkeling op het gebied van jailbreaken is dat er wordt geëxperimenteerd met het hergebruiken van een kwetsbare kernel in een latere firmware. Deze techniek is met name interessant, omdat op deze manier een tethered bootrom-exploit gecombineerd kan worden met een (hergebruikte) kernel-exploit om alsnog een untethered jailbreak te bereiken. In dat geval hoeft er dus géén nieuwe kernel-exploit in een nieuwe firmware gevonden te worden om een untethered jailbreak te bereiken.
- Exploit: het jailbreaken van een iDevice begint met het zoeken naar een kwetsbaarheid (vulnerability) in de code van Apple, die vervolgens met behulp van een exploit gebruikt kan worden. De exploit is de eerste stap in het creëeren van een zogenaamde injection vector; dat wil zeggen een manier om code of data op een bepaalde plaats te kunnen injecteren. Als dit lukt, kan er vervolgens een payload worden geschreven; de code die uiteindelijk met behulp van de injection vector geïnjecteerd wordt en de benodige aanpassingen aan het bestandssysteem uitvoert.
Taalfout gezien of andere suggestie hoe we dit artikel kunnen verbeteren? Laat het ons weten!
Reacties: 68 reacties