Как рутинг работает?

23

Или как мне рутировать устройство без рутера?

Инструкции по рутированию для устройств Android, которые я видел, обычно имеют следующую форму:

  1. Скачать Gingerbreak.apk
  2. Запустите Gingerbreak, нажмите «корневое устройство»
  3. Наблюдайте, что Superuser.apkэто было волшебным образом установлено, возможно, наряду с busyboxдругими вещами, и наслаждайтесь своей добротой.

Я хочу знать следующее: как на самом деле происходит укоренение? Что делает Gingerbreak?

Я понимаю конечный результат рутирования:

  • su присутствует и работает
  • Superuser.apk установлен и контролирует доступ к su
  • Присутствуют различные утилиты, предоставляемые BusyBox (необязательно?)

Я также думаю, что понимаю основную идею о том, как Gingerbreak запускается - он использует локальную уязвимость повышения привилегий и использует свои новые возможности для развертывания Superuser и всего остального, что необходимо.

Так что, если я не ошибаюсь в некоторых из представленных мной выше понятий, суть того, что я хочу знать, - это то, что делает установщик root для развертывания и активации Superuser. Кажется, что простого размещения Superuser.apkв нужном месте будет недостаточно - как получить разрешенный root-доступ? Как он подключается, чтобы ограничить доступ для других приложений?

Что делает Gingerbreak после эксплойта, чтобы включить и защитить корневой доступ?

Майкл Экстранд
источник
1
См. Также: android.stackexchange.com/questions/236/…
Эль

Ответы:

16

Что обычно делают APK и эксплойты:

  • APK помещает нужные файлы в нужное место для запуска эксплойта
  • APK запускает эксплойт
  • Эксплойт пытается получить root-доступ
  • В случае успеха эксплойт перемонтирует / system как read-write и запускает скрипт установщика
  • Сценарий установщика пытается установить APK-файл su и суперпользователя и перезагружается.

В качестве примера на этой странице подробно рассказывается, как эксплойт rageagainstthecage пытается получить повышенные привилегии.

Sparx
источник
2
Спасибо. Я думаю, что это еще больше сужает мой реальный вопрос - что именно делает скрипт установщика? Или где я могу найти копию для чтения? Большинство документов, которые я вижу, очень непрозрачны - «скачайте этот APK, он работает» со ссылкой на какой-то случайный сайт для обмена файлами.
Майкл Экстранд
su позволяет повысить привилегии в Unix-подобных средах (на которых основан Android). Когда двоичный файл su установлен, приложения / скрипты могут затем использовать команды su и sudo для запуска и доступа к частям файловой системы, которые обычно ограничены для обычных пользователей. По сути, именно поэтому укореняется телефон - чтобы иметь возможность получить доступ к «ограниченным» частям системы и иметь возможность выполнять команды, которые обычному пользователю запрещено выполнять.
Спаркс
9

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

Магия происходит в suдвоичном формате (см. Источник, а также этот вопрос ). Я (неправильно) думал, что это suбыл стандарт su, и что что-то было каким-то образом подключено к умеренному доступу к этому двоичному файлу Superuser.apk.

Неправильно. То, что на самом деле происходит, гораздо проще: Superuser предоставляет пользовательскую реализацию, suкоторая аутентифицирует доступ через Superuser и его авторизованную базу данных приложений.

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

Майкл Экстранд
источник
Я думаю, что это упускает одну важную вещь: suсамо по себе это вовсе не волшебство, единственное волшебство в том, что ОС обрабатывает его специально. Все, что нужно сделать, это вернуть «OK» или «Not OK», когда ОС спросит, разрешать ли конкретному приложению повышать разрешения. Если он отсутствует или всегда возвращает «Not OK», то обычные приложения никогда не смогут получить root. Таким образом, рутирование - это в основном процесс размещения 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
@ Алекс Не совсем. Я специально пытался выяснить, что рутовщик делает после эксплойта . В этом случае, поскольку у меня был root-доступ через ADB, я не хотел запускать эксплойт без необходимости.
Майкл Экстранд