Как Су работает на андроиде? И какие условия для его работы? Что такое рутирование на Android?

Возможный дубликат: что означает su: process = Runtime.getRuntime ().exec(su);

Я устал пробовать все разные вещи, но я все еще не понимаю, когда su заработает. Что такое рутирование устройства в Android? Кто-нибудь, пожалуйста, помогите мне с этим.

Я ответил на следующий вопрос. Решение, которое я разместил там, я протестировал, и оно сработало.

Добавление полного разрешения для файла изображения в android.

Вот мой вопрос:

Я пробовал Следовать.

Скопировано су.

Установил SuperUser.apk,

Из программы я вызвал su, а затем, используя только что созданный процесс, я выполнил необходимые операции.

Это имеет 2 результата.

1) Когда устройство рутировано (например, при выполнении опции постоянного рута в z4root), оно работает, оно изменяет права доступа к системным файлам.

2) Когда устройство не рутировано, оно не работает.

Пожалуйста, объясните, какие дополнительные функции выполняет z4root, что делает задачу возможной. Объясните вкратце пожалуйста.

Дайте мне знать, если мой вопрос не ясен. Благодаря тонну..


person mk..    schedule 05.04.2012    source источник
comment
Возможный дубликат что означает su: process = Runtime.getRuntime ().exec(su);   -  person Cœur    schedule 14.07.2018


Ответы (3)


Что z4root (или любая другая программа рутирования) использует какой-то эксплойт, чтобы изменить свой собственный uid (user-id) на 0 (root). Вы можете думать об этом как о выполнении какого-то взлома и обмане ядра, заставляя его думать, что оно действительно имеет право быть root (тогда, если z4root был вирусом, он мог делать с вашим телефоном все, от установки кейлоггеров до его блокировки). Конечно, если можно обмануть ядро ​​таким образом, чтобы предоставить вам root-доступ, это считается уязвимостью безопасности (любое приложение может сделать это и выполнить некоторые вредоносные действия) и обычно исправляется в будущих обновлениях ядра (поэтому z4root не может работать, если вы обновите прошивку).

Когда z4root устанавливает для своего uid значение 0, он делает следующее: перемонтирует раздел /system как доступный для записи (по умолчанию он доступен только для чтения), копирует двоичный файл su, Superuser.apk и busybox, а затем перемонтирует /system обратно как доступный только для чтения.

Так как же бинарный файл su дает вам root-доступ без «взлома», когда обычно приложения имеют тот же uid, что и родительский процесс? Это связано с тем, что двоичный файл su имеет установленный флаг set-uid и всегда запускается как uid 0 (root).

Теперь, если вы скопировали двоичный файл su в /system/bin, то у вас должен быть root-доступ, что означает, что вы просто забыли изменить владельца/разрешения (chown root:root /system/bin/su; chmod 6755 /system/bin/su), но для этого вам все равно нужен root-доступ.

person matix2267    schedule 09.04.2012
comment
Спасибо .. Но есть ли какие-нибудь подсказки о том, как программно изменить Uid на 0 ..? - person mk..; 16.04.2012
comment
@happy2Help Вы не можете изменить свой uid, если вы не являетесь пользователем root (uid 0). Только root может изменить uid, в противном случае любой пользователь может дать себе повышенные привилегии. Ответ: вызовите исполняемый файл с установленным флагом setuid (в большинстве Linux по умолчанию есть только su и sudo, но вы можете создать свой — вам потребуется root-доступ, чтобы использовать его как root). - person matix2267; 22.04.2012
comment
Я думаю, что 3-й абзац и ниже неверны. su Android не использует флаг setuid, потому что Android не уважает этот флаг. Вместо этого su в Android связывается с процессом-демоном daemonsu, который напрямую разветвляется init. Таким образом, программа, которую вы запускаете с помощью su, является не дочерним процессом su, а дочерним процессом daemonsu. - person Wu Yongzheng; 28.10.2014
comment
@WuYongzheng Этому ответу больше двух лет, и в то время я вполне уверен, что Android использовал флаг setuid, так как именно так я рутировал свой телефон (скачать изображение -> распаковать -> добавить двоичный файл su, setuid -> pack -> flash) - person matix2267; 29.10.2014
comment
@matix2267 Не заметил дату. Только что проверил. Удаление бита setuid было реализовано в Android 4.3 и выше. - person Wu Yongzheng; 29.10.2014
comment
@WuYongzheng Могу я кое-что спросить? Важна ли политика SELinux в отношении использования демона? Если SELinux разрешительный, нужен ли еще демон? - person SarpSTA; 25.05.2016
comment
@SarpSTA, да, SELinux - еще одна причина, по которой нужен демон, но только отключение SELinux не включит старый школьный setuid su. - person Wu Yongzheng; 25.05.2016
comment
@ matix2267 В последнее время появился новый корневой метод, который обходит необходимость в z4root и других приложениях, использующих эксплойты. Это кстати прямая прошивка /system/bin/su во время загрузки/восстановления. Является ли это правильным способом рутирования и способным выдержать обновления ядра / ОС? - person Prahlad Yeri; 07.07.2016
comment
привет @matix2267, не могли бы вы взглянуть на android. stackexchange.com/questions/175049/ ? я думаю, вы можете одним щелчком мыши сделать там ac или, если вы предпочитаете, я могу скопировать q на этот сайт? - person tgkprog; 04.06.2017
comment
В настоящее время больше нет необходимости рутировать свой телефон. Просто разблокируйте загрузчик, прошейте сборку userdebug, и у вас будет root-доступ из adb (просто вызовите $ adb root), который вы затем можете использовать, чтобы делать все, что захотите, включая распространение этого в пользовательском пространстве на устройстве. - person matix2267; 09.12.2018

Когда вы рутируете устройство, вы перезаписываете или изменяете образ ОС в ПЗУ, чтобы предоставить вам повышенные разрешения. Установка приложений в пользовательском режиме не может дать вам повышения привилегий в любой версии Linux. Если бы любой пользователь мог сделать себя суперпользователем, «скопировав su», не было бы такой вещи, как безопасность.

person Jeremy    schedule 05.04.2012
comment
Каковы именно различия в образах ОС, это то, что я пытаюсь понять. Спасибо за ответ. - person mk..; 05.04.2012
comment
Установка приложений ... не может дать вам повышение привилегий. Я согласен, что это не предполагается, но обычно методы рутирования устройства работают именно так. Эксплуатация уязвимости системы безопасности выполняется для эскалации текущего процесса без полномочий root до уровня root, затем вносятся некоторые постоянные изменения, позволяющие упростить повышение привилегий в дальнейшем (например, копирование su в «системную» файловую систему, обычно доступную только для чтения). - person user2957811; 29.02.2016

Я не уверен, что вы спрашиваете, но это кажется простой вещью. Вы пытаетесь стать «суперпользователем» или делать что-то с правами суперпользователя. Вы можете сделать это только в том случае, если у вас есть фактические права на это, предоставленные учетной записи пользователя, работающей в настоящее время на вашем устройстве. Обычно у вас нет на это права.

Имейте в виду, что «суперпользователь» — это то же самое, что «корень».

  • Если вы «рутируете» свое устройство, это означает, что вы даете себе право стать суперпользователем. Вы можете делать вещи, которые требуют суперпользователя: «su» — одна из этих команд, так как она говорит «зарегистрируйтесь как суперпользователь». Очевидно, вам нужны права суперпользователя, чтобы стать этим пользователем.
  • Если вы не рутировали устройство, у вас нет прав на то, что может делать суперпользователь. Так что звонить su не получится.

Таким образом, вы можете делать только root вещи, если у вас есть rooted ваше устройство.

person Nanne    schedule 05.04.2012
comment
Таким образом, вы можете делать корневые вещи только в том случае, если вы рутировали свое устройство. В чем разница между до и после рутирования устройства, это то, что я пытаюсь понять. Внутри ОС что-то добавлено, что заставит su работать? или что это такое? - person mk..; 05.04.2012
comment
Посмотрите на это так: вы вошли в систему на своем устройстве как пользователь, как и на любом другом компьютере. У этого пользователя нет прав суперпользователя. Все, что вы запускаете (приложения и т. д.), запускается с вашими правами. Изменение, которое вы вносите, заключается в том, что вы позволяете случайным пользователям (например, вам) становиться root. Посмотрите на это так: обычно вы входите в библиотечный компьютер: вы не являетесь администратором. рутирование будет означать взлом компьютера, чтобы пользователь по умолчанию стал администратором. - person Nanne; 05.04.2012