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

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

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

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

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

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

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

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

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

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

Смотрите также: android.stackexchange.com/questions/236/…

Ответы (2)

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

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

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

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

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

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

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

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

Я думаю, что при этом упускается одна важная вещь: suсамо по себе это вовсе не волшебство, единственная магия в том, что ОС обрабатывает его особым образом. Все, что ему нужно сделать, это вернуть «ОК» или «Не ОК», когда ОС спросит, разрешить ли конкретному приложению повышать разрешения. Если он отсутствует или всегда возвращает «Не в порядке», обычные приложения никогда не смогут получить root-права. Таким образом, рутирование — это, по сути, процесс размещения suдвоичного файла, который иногда может возвращать «ОК», в защищенное место в системе, которая не должна позволять этого делать.
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionsкак будто это было бы легко без эксплойта, эксплойт - это волшебство.
@ Алекс Не совсем так. Я специально пытался выяснить, что рутер делает после эксплойта . В данном случае, поскольку у меня был root-доступ через ADB, я не хотел без необходимости запускать эксплойт.
@RomanSt не совсем правильно, у него просто есть setuidбит, который позволяет ему работать от имени пользователя root, даже если пользователь, который его вызвал, не