Bagaimana cara rooting bekerja?

23

Atau, bagaimana cara saya me-root perangkat saya tanpa rooter?

Petunjuk rooting untuk perangkat Android yang telah saya lihat biasanya dalam bentuk berikut:

  1. Unduh Gingerbreak.apk
  2. Jalankan Gingerbreak, klik "root device"
  3. Amati yang Superuser.apktelah diinstal secara ajaib, mungkin bersama dengan busyboxdan hal-hal lain, dan nikmati kebaikanmu yang tak terkendali.

Yang ingin saya ketahui adalah ini: bagaimana rooting sebenarnya terjadi? Apa yang dilakukan Gingerbreak?

Saya mengerti hasil akhir rooting:

  • su hadir dan berfungsi
  • Superuser.apk diinstal dan mengontrol akses ke su
  • Berbagai utilitas hadir, disediakan oleh BusyBox (opsional?)

Saya juga berpikir saya memahami ide dasar tentang bagaimana Gingerbreak memulai - ia mengeksploitasi beberapa kerentanan eskalasi hak istimewa lokal dan menggunakan kekuatannya yang baru ditemukan untuk menyebarkan Superuser dan apa pun yang diperlukan.

Jadi, kecuali saya salah dalam beberapa pemahaman yang saya paparkan di atas, inti dari hal yang ingin saya ketahui adalah apa yang dilakukan oleh root installer untuk menggunakan dan mengaktifkan Superuser. Tampaknya hanya menempatkan Superuser.apkdi tempat yang tepat tidak akan cukup - bagaimana cara mendapatkan akses root? Bagaimana cara terhubung ke akses itu untuk aplikasi lain?

Apa yang dilakukan Gingerbreak pasca-eksploitasi untuk mengaktifkan dan mengamankan akses root?

Michael Ekstrand
sumber

Jawaban:

16

Apa yang dilakukan oleh APK dan exploit (biasanya) adalah sebagai berikut:

  • APK menempatkan file yang tepat di tempat yang tepat untuk menjalankan exploit
  • APK menjalankan exploit
  • Eksploitasi berusaha untuk mendapatkan akses root
  • Jika berhasil, exploit remounts / system sebagai read-write dan menjalankan script installer
  • Skrip penginstal mencoba menginstal su binary dan superuser APK, dan mem-boot ulang

Sebagai contoh, halaman ini merinci bagaimana eksploitasi rageagainstthage mencoba untuk mendapatkan hak istimewa yang ditingkatkan.

Sparx
sumber
2
Terima kasih. Saya pikir ini mempersempit pertanyaan saya selanjutnya - apa sebenarnya yang dilakukan skrip penginstal? Atau di mana saya dapat menemukan salinannya untuk dibaca? Sebagian besar dokumen yang saya lihat sangat buram - “unduh APK ini, berfungsi” dengan tautan ke beberapa situs berbagi file acak.
Michael Ekstrand
su memungkinkan peningkatan hak istimewa di lingkungan seperti Unix (berdasarkan Android). Ketika su binary diinstal, aplikasi / skrip kemudian dapat menggunakan perintah su dan sudo untuk menjalankan dan mengakses bagian-bagian dari sistem file yang biasanya dibatasi untuk pengguna biasa. Pada intinya, itulah sebabnya seseorang melakukan root pada ponsel - untuk dapat memperoleh akses ke bagian "terbatas" dari sistem dan untuk dapat melaksanakan perintah yang tidak boleh dilakukan oleh pengguna biasa.
Sparx
9

Setelah banyak menggali, saya akhirnya menemukan jawabannya. Saya salah tentang di mana keajaiban itu - tidak ada dalam skrip penginstal; yang harus dilakukan hanyalah meletakkan sudan Superuser.apkbinari di tempat yang tepat dan mengatur izinnya. Jadi itu benar-benar sesederhana menjatuhkan file di tempat dan mengatur izin. Tidak ada kabel ajaib.

Keajaiban terjadi dalam subiner (lihat sumber dan juga pertanyaan ini ). Saya (secara keliru) berpikir bahwa suitu adalah standar su, dan bahwa segala sesuatu terhubung dengan baik ke akses moderat ke biner tersebut Superuser.apk.

Salah. Apa yang sebenarnya terjadi jauh lebih sederhana: Superuser menyediakan implementasi kustom suyang mengotentikasi akses melalui Superuser dan basis data aplikasi resminya.

Jadi proses rooting sesederhana kata @Sparx. Perangkat lunak yang digunakan berisi keajaiban.

Michael Ekstrand
sumber
Saya pikir ini melewatkan satu hal penting: su itu sendiri bukan sihir sama sekali, satu-satunya keajaiban tentang itu adalah bahwa OS memperlakukannya secara khusus. Yang harus dilakukan adalah mengembalikan "OK" atau "Tidak OK" ketika ditanya oleh OS apakah akan mengizinkan aplikasi tertentu untuk meningkatkan izin. Jika hilang, atau selalu mengembalikan "Tidak OK" maka aplikasi normal tidak akan pernah mendapatkan root. Jadi rooting pada dasarnya adalah proses menempatkan subiner yang kadang-kadang dapat mengembalikan "OK", ke lokasi yang dilindungi pada sistem yang seharusnya tidak memungkinkan ini dilakukan.
RomanSt
4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissions seolah-olah ini akan mudah tanpa eksploit, eksploit adalah keajaiban.
Alex
1
@ Alex Tidak cukup. Saya secara khusus mencoba mencari tahu apa yang dilakukan rooter pasca eksploitasi . Dalam hal ini, karena saya memiliki akses root melalui ADB, jadi saya tidak ingin menjalankan eksploitasi secara sia-sia.
Michael Ekstrand