Як працює вкорінення?


23

Або, як я виконую корінь свого пристрою без рутера?

Інструкції щодо вкорінення для пристроїв Android, які я бачив, зазвичай мають таку форму:

  1. Завантажити Gingerbreak.apk
  2. Запустіть Gingerbreak, натисніть "root root"
  3. Зауважте, що Superuser.apkмагічно встановлено, можливо, разом із busyboxіншими речами, і насолоджуйтесь своєю корінною добротою.

Що я хочу знати, це таке: як насправді відбувається вкорінення? Що робить пряник?

Я розумію кінцевий результат вкорінення:

  • su присутній і працює
  • Superuser.apk встановлено та контролює доступ до нього su
  • Присутні різні утиліти, що надаються BusyBox (необов’язково?)

Я також думаю, що я розумію основну ідею того, як розпочинається використання Gingerbreak - він використовує деяку вразливість місцевих ескалацій привілеїв та використовує свої нововведені повноваження для розгортання Суперрузера та всього іншого, що необхідно.

Отже, якщо я не помиляюся з деяким розумінням, яке я виклав вище, суть, яку я хочу знати, - це те, що робить кореневий інсталятор для розгортання та активації Superuser. Здається, що розміщення Superuser.apkв потрібному місці було б недостатньо - як отримати дозволений кореневий доступ? Як це підключити для зменшення доступу до інших програм?

Що робить Gingerbreak після експлуатації, щоб увімкнути та захистити кореневий доступ?


1
Дивіться також: android.stackexchange.com/questions/236/…
але

Відповіді:


16

Що АПК та експлуатують (як правило) роблять так:

  • APK ставить потрібні файли в потрібне місце для запуску експлуатації
  • АПК здійснює експлуатацію
  • Експлуатація намагається досягти кореневого доступу
  • Якщо це досягає успіху, exploit перераховує / система як read-write та запускає сценарій встановлення
  • Сценарій інсталятора намагається встановити AP-файл бінарного та надрукованого програмного забезпечення, а також перезавантажиться

Як приклад, на цій сторінці розповідається про те, як експлуатується скарга, намагаючись отримати підвищені привілеї.


2
Спасибі. Я думаю, що це звужує моє реальне питання далі - що саме робить сценарій інсталятора? Або де я можу знайти його копію для читання? Більшість документів, які я бачу, є дуже непрозорими - "завантажте цей APK, він працює" зі посиланням на якийсь веб-сайт із випадковим обміном файлами.
Майкл Екстранд

su дозволяє підвищити привілеї в Unix-подібних середовищах (на чому базується Android). Коли встановлено su binary, програми / скрипти можуть використовувати команди su та sudo для запуску та доступу до частин файлової системи, які зазвичай обмежені для звичайних користувачів. По суті, тому одне коріння телефону - мати можливість отримати доступ до "обмежених" частин системи та мати можливість виконувати команди, які звичайному користувачеві заборонено виконувати.
Спаркс

9

Після довгих копань я нарешті зрозумів це. Я помилявся, де магія - її немає в сценарії інсталятора; все, що потрібно зробити, - це поставити файли suта Superuser.apkбінарні файли в потрібне місце та встановити їх дозволи. Тож насправді це так просто, як скидання файлів на місце та встановлення дозволів. Ніякої магічної проводки.

Магія відбувається в suдвійковому (див. Джерело, а також це питання ). Я (помилково) думав, що suце стандарт su, і що речі якимось чином підключаються до помірного доступу до цього бінарного Superuser.apk.

Неправильно. Що насправді відбувається набагато простіше: Superuser забезпечує користувацьку реалізацію, suяка підтверджує доступ через Superuser та його авторизовану базу даних додатків.

Тож процес укорінення такий же простий, як сказав @Sparx. Розгорнуте програмне забезпечення містить магію.


Я думаю, що це не вистачає однієї важливої ​​речі: suсама по собі зовсім не є магією, єдина магія щодо неї полягає в тому, що ОС спеціально ставиться до цього. Все, що потрібно зробити, це повернути "ОК" або "Не в порядку", коли ОС запитує, чи дозволяти певній програмі підвищувати дозволи. Якщо він відсутній або завжди повертається "Не в порядку", звичайні програми ніколи не зможуть отримати корінь. Таким чином, вкорінення - це в основному процес розміщення suдвійкового файлу, який іноді може повернути "ОК", в захищене місце в системі, яка не повинна дозволяти цього робити.
RomanSt

4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionsяк би це було легко без подвигу, подвиг - це магія.
Олексій

1
@Alex Не зовсім. Я спеціально намагався розібратися, що ротор виконує після експлуатації . У цьому випадку через те, що я мав доступ до кореневої мережі через ADB, тому я не хотів зайво запускати подвиг.
Майкл Екстранд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.