1 poin oleh GN⁺ 2025-11-28 | Belum ada 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
  • 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

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

Belum ada komentar.

Belum ada komentar.