1 poin oleh GN⁺ 2025-11-28 | 1 komentar | Bagikan ke WhatsApp
  • 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 kcgen di 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
    Iklan
  • Properti nvram-proxy-data harus 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-data harus diisi secara dinamis; penggunaan nilai statis berisiko menimpa NVRAM yang sebenarnya
  • Panggilan UpdateDeviceTree() diganti untuk menyisipkan nvram-proxy-data dan random-seed
  • Menambahkan argumen amfi=0xff untuk 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 kcgen di 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
  • 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 asr dan mengubah options.n88.plist menjadi options.n18.plist untuk menyesuaikan tata letak partisi
  • Untuk memasang eksploit iBoot, biner rc.boot diimplementasikan ulang
    • Melakukan remount ramdisk dan mengatur umask
    • Memanggil restored_external -server agar tidak reboot setelah pemulihan
    • Setelah pemulihan selesai, membuat partisi ketiga, menulis eksploit, mengatur boot-partition ke 2, lalu reboot
    Iklan

Modifikasi Root Filesystem

  • Menambahkan /System/Library/CoreServices/SpringBoard.app/N18AP.plist dan 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/BlueTool dioverride dengan /etc/bluetool
  • Dengan menghapus kunci LimitLoadToHardware dari 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 0x2714 milik iPhone 3GS menjadi 0x2715 milik 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

 
GN⁺ 2025-11-28
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

    • Terkait itu, saya juga membuat daftar aplikasi yang bisa dipakai untuk memfilter aplikasi yang masih berjalan di perangkat iOS lama
    • Diskusi seperti ini terasa seperti penyangkalan terhadap realitas limbah elektronik
      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
    • Dengan hadirnya Apple Silicon dan Tahoe, masa depan OCLP menjadi tidak jelas
      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
    • Saya baru-baru ini membeli iPad Air 1 seharga 25 dolar di Mercari, dan kondisinya sangat bagus
      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
    • Saya penasaran bagaimana tepatnya “memblokir pemasangan OS lain” itu diimplementasikan
  • 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 lebih melenceng lagi, saya pernah mencoba melepas modul radio dari Samsung Galaxy IV
      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

    • Menurut saya ini adalah contoh planned obsolescence
      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

    • 26 (Tahoe) punya banyak bug dan kualitasnya terasa belum matang di semua platform
      Baik di MacBook maupun iPhone, kualitasnya terasa tidak sebagus dulu
    • Mungkin harus ada gugatan dari Uni Eropa dulu baru downgrade OS bisa dimungkinkan
      Saya juga ingin menjalankan ponsel lama saya dengan iOS 16 lalu jailbreak
    • Sayangnya, tidak ada exploit untuk perangkat tersebut
  • Andai ada OS alternatif seperti Lineage OS juga untuk perangkat Apple

    • Akar masalahnya adalah kebijakan bootloader yang dikunci
      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-id ditempatkan di depan setiap baris, jadi prepend memang istilah yang tepat

  • Saya 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