Menjalankan iOS Tidak Resmi di Perangkat yang Dukungannya Sudah Dihentikan
(nyansatan.github.io)- Proyek yang menjelaskan secara rinci proses teknis untuk menjalankan iOS 6 yang tidak didukung secara resmi pada iPod touch generasi ke-3
- Menjalankan versi yang lebih baru pada perangkat lama dengan memodifikasi dan menyusun ulang komponen inti iOS seperti DeviceTree, iBoot, Kernelcache, Restore Ramdisk, dan Root Filesystem
- Menggunakan skrip Python untuk secara otomatis membandingkan dan menerapkan perbedaan DeviceTree antara iPhone 3GS dan iPod touch 3, serta melewati verifikasi tanda tangan kode dengan patch iBoot
- Untuk membangun ulang Kernelcache, digunakan alat
kcgendi macOS untuk menggabungkan kernel dan kext untuk armv7, menghapus simbol yang tidak perlu, lalu mengompresnya - Memiliki nilai teknis tinggi karena memperluas potensi perangkat keras lama sekaligus membagikan teknik analisis struktur internal iOS dan pembuatan firmware kustom
Ikhtisar komponen iOS
- iOS terdiri dari iBoot, Kernelcache, DeviceTree, sistem berkas ruang pengguna, dan firmware untuk prosesor tambahan
- iBoot adalah bootloader, dengan empat bentuk: iBSS, iBEC, LLB, dan iBoot
- Kernelcache adalah berkas yang menggabungkan kernel dan ekstensi kernel (kext) ke dalam satu biner
- DeviceTree mendefinisikan konfigurasi perangkat keras dan parameter perilaku perangkat lunak, dan dimodifikasi oleh iBoot saat berjalan
- Sistem berkas dibagi menjadi restore ramdisk untuk instalasi dan root filesystem untuk penyimpanan permanen
Pengujian di iPhone 3GS
- iPhone 3GS dan iPod touch 3 menggunakan SoC S5L8920X / S5L8922X yang serupa
- Karena iPhone 3GS secara resmi mendukung iOS 6, dilakukan uji boot iOS 6.0 bersama iBoot dan DeviceTree dari iOS 5.1.1
- Masalah utamanya adalah ketidakcocokan DeviceTree; iOS 6 membutuhkan node dan properti baru yang ditambahkan, termasuk
nvram-proxy-data
Modifikasi DeviceTree
- Dibuat skrip Python untuk menghitung dan menerapkan perbedaan antara dua DeviceTree
- Skrip tersebut dipublikasikan di repositori SundanceInH2A
- Properti
nvram-proxy-dataharus berisi dump NVRAM; jika dibiarkan kosong, kernel akan berhenti pada tahap awal - Saat diterapkan ke iPod touch 3, entri khusus iPhone dihapus terlebih dahulu sebelum diff diterapkan
Patch iBoot
- Secara default dilakukan bypass pemeriksaan tanda tangan Image3, injeksi boot-args, dan patch debug-enabled
nvram-proxy-dataharus diisi secara dinamis; penggunaan nilai statis berisiko menimpa NVRAM yang sebenarnya- Panggilan
UpdateDeviceTree()diganti untuk menyisipkannvram-proxy-datadanrandom-seed - Menambahkan argumen
amfi=0xffuntuk menonaktifkan penandatanganan kode - Pada kombinasi iBoot+kernel lain, perlu memeriksa perbedaan DeviceTree dan struktur
boot_args
Pembuatan Kernelcache
- Kernel dan kext iOS 6 untuk iPod touch 3 ada dalam build internal, tetapi untuk memuatnya secara bersamaan diperlukan prelinked kernelcache
- Menggunakan alat
kcgendi macOS untuk membuat kernelcache armv7- Opsi utama:
-arch armv7,-all-personalities,-strip-symbols,-uncompressed - Setelah simbol yang tidak perlu dihapus, hasilnya diubah menjadi satu slice dengan
lipo -thin armv7
- Opsi utama:
- Kernelcache yang dihasilkan kemudian dikompresi dan dikemas ke dalam kontainer Image3
- Daftar kext disusun dengan membandingkan iOS 5.1.1 dan 6.0 milik iPhone 3GS, dan diperlukan modifikasi pada Info.plist kext Wi‑Fi
Modifikasi Restore Ramdisk
- Melakukan patch pada
asrdan mengubahoptions.n88.plistmenjadioptions.n18.plistuntuk menyesuaikan tata letak partisi - Untuk memasang eksploit iBoot, biner
rc.bootdiimplementasikan ulang- Melakukan remount ramdisk dan mengatur
umask - Memanggil
restored_external -serveragar tidak reboot setelah pemulihan - Setelah pemulihan selesai, membuat partisi ketiga, menulis eksploit, mengatur
boot-partitionke 2, lalu reboot
- Melakukan remount ramdisk dan mengatur
Modifikasi Root Filesystem
- Menambahkan
/System/Library/CoreServices/SpringBoard.app/N18AP.plistdan mencerminkan fitur iOS 6 - Menggabungkan konfigurasi layar utama dari iOS 5.1.1 dan iPod touch 4
- Menambahkan firmware Multitouch, Wi‑Fi, dan Bluetooth
- Untuk Bluetooth, hardcoding di
/usr/sbin/BlueTooldioverride dengan/etc/bluetool
- Untuk Bluetooth, hardcoding di
- Dengan menghapus kunci
LimitLoadToHardwaredari daemon FairPlay, fitur itu dapat diaktifkan juga di iPod touch 3 - Pada iOS 6.1 ke atas, diperlukan patch tambahan karena cache tanda tangan LaunchDaemon
- Memodifikasi peta Product ID: mengganti
0x2714milik iPhone 3GS menjadi0x2715milik iPod touch 3 - Memodifikasi
getDeviceVariant()milik MobileGestalt agar selalu mengembalikan"A" - Saat memodifikasi cache bersama DYLD, tanda tangan kode dapat dipulihkan dengan menghitung ulang hash SHA-1
Eksploit iBoot
- Menulis ulang eksploit yang memanfaatkan bug driver HFS+ di iOS 5
- Dibuat lebih deterministik dibanding versi sebelumnya
Kesimpulan dan rencana berikutnya
- Seluruh pekerjaan ternyata tidak sesulit yang diperkirakan, dan setelah alat dirilis muncul banyak pertanyaan terkait jailbreak
- Ada kemungkinan jailbreak dapat dilakukan secara sederhana dengan patch kernel dan pemasangan Cydia
- Target berikutnya adalah menguji menjalankan iOS 6 di iPad 1
- Proyek ini menyediakan bahan rujukan praktis untuk analisis struktur internal iOS dan pemanfaatan perangkat lama
1 komentar
Komentar Hacker News
Rasanya perangkat seperti ini juga sangat dibutuhkan untuk iDevices
Tidak masuk akal kalau iPad Air generasi 1 yang sudah tua tapi masih layak dipakai dibuang menjadi e-waste
Masalahnya adalah Apple sudah tidak lagi mendukungnya, dan bahkan kebijakan yang memblokir pemasangan sistem operasi lain
Di Mac ada OpenCore Legacy Patcher, jadi macOS terbaru masih bisa dijalankan di Mac lawas
Alih-alih “sudah tua tapi masih layak dipakai”, ini pada dasarnya hanya “perangkat tua”
Laju perkembangan teknologi terlalu cepat, jadi perangkat seperti iPad Air 2013 sekarang bahkan kesulitan untuk browsing web
Saya pernah memakai Mac mini 2012 dengan OpenCore Legacy Patcher, tetapi akhirnya beralih ke Linux karena penurunan performa dan kernel panic
Pada akhirnya perangkat seperti ini harus dipandang sebagai semacam barang konsumsi sementara
Hak untuk memperbaiki itu penting, tetapi kebanyakan pengguna tidak akan terus memakai perangkat lama
Kalau dianalogikan dengan mobil, meskipun Corolla tahun 1999 menjadi sepenuhnya open source, kebanyakan orang tetap akan membeli mobil baru
Tim Dortania juga mengatakan dukungan untuk Apple Silicon pada praktiknya mustahil, dan Intel Mac dengan chip T2 tampaknya juga akan segera kehilangan dukungan
Pada akhirnya, sepertinya akan datang hari ketika Mac lawas juga menghadapi pembahasan akhir dukungan seperti iPhone dan iPad
EPUB dan PDF masih ditangani dengan baik, tetapi WebKit-nya terlalu tua sehingga browsing web hampir mustahil
Kernelnya tampak versi 2021, tetapi WebKit-nya sepertinya berhenti di sekitar 2018
Agak melenceng dari topik, tetapi saya punya beberapa iPhone 5/5s/SE
Saya memakainya secara offline saja untuk pencatatan detak jantung, kontrol action cam, dan perekaman suara
Masih kecil, cepat, dan cukup layak dipakai bahkan di 2025
Saya tidak tahu apakah itu juga mungkin di iPhone, tetapi itu eksperimen yang menarik
Pada masa awal bekerja di Apple, saya sempat mengalami proyek iOS 6 dan Snow Leopard
Tulisan ini mengingatkan saya pada struktur OS tertutup dan istilah-istilah lama dari masa itu, jadi menyenangkan untuk dibaca
Saya masih sangat menyukai iPad Air keluaran 2014
iOS 12.5 adalah versi terakhirnya, tetapi sebagian besar aplikasi masih berjalan dengan baik
Saya memakainya 6–7 jam sehari, dan saya hanya butuh browser yang sedikit lebih baru
Apple melarang browser di iOS memakai rendering engine miliknya sendiri
Jadi ketika pembaruan iOS berhenti, bukan hanya Safari, tetapi semua browser dan aplikasi berbasis WebView ikut menjadi usang pada saat yang sama
Ini menarik, tetapi kalau metode ini bisa dipakai untuk downgrade dari iOS 26 ke iOS 18, itu akan terasa seperti sihir
Baik di MacBook maupun iPhone, kualitasnya terasa tidak sebagus dulu
Saya juga ingin menjalankan ponsel lama saya dengan iOS 16 lalu jailbreak
Andai ada OS alternatif seperti Lineage OS juga untuk perangkat Apple
Selama Apple tidak membukanya, pemasangan OS secara bebas tidak akan mungkin
Saya penasaran apakah dengan metode ini iPhone 2G bisa mem-boot iPhone OS 1.0
Di perangkat saya, yang bisa boot hanya sampai 1.1.4, sedangkan 1.1.1 berhenti karena gagal inisialisasi FTL
Saya ingin mencoba lagi aktivasi hack panggilan darurat yang dulu, tetapi iPhone 2G yang saya pakai waktu itu sudah hilang
Tulisan yang menarik
Hanya saja, pada contoh kode
--bundle-idditempatkan di depan setiap baris, jadi prepend memang istilah yang tepatSaya punya iPad Air 1 lama dan penasaran apakah perangkat itu bisa di-upgrade dari iOS 12
Akan bagus kalau ada undang-undang yang memaksa perangkat yang sudah tidak lagi didukung perusahaan untuk dibuka secara wajib