Суперпользователь не показывает подсказку

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

Я пытался получить root права на свой телефон Android 4.2.1, используя различные автоматические методы, но все они потерпели неудачу. Также рут с помощью update.zipне работает из-за ошибки "Invalid OTA, отсутствует scatter".

Однако я могу получить root-доступ с помощью adb rootкоманды « », поэтому я попытался запустить свой телефон вручную:

  • ' adb root' и ' adb remount' команды для получения доступа к системному разделу
  • загружен новейший двоичный файл su (версия 3.1.1)
  • подтолкнул его к ' /system/xbin/su'
  • установить бит suid и sgid: 'chmod 6755 su'--> ls -lотображает'-rwsr-sr-x root root 380532 2008-02-29 02:33 su'
  • связано ' /system/xbin/su' с ' /system/bin/su'
  • установил новейший Superuser из Google Play (3.1.3)
  • установлен busybox (хотя это и не обязательно, если я правильно понимаю?)

Теперь становится интересно:
когда я ' adb shell' вхожу в свой телефон, я могу использовать suкоманду ' ' и автоматически получать привилегии root ($ меняется на #, и я могу получить доступ к файлам root), и он регистрируется в приложении Superuser с инициатором как «Shell». . НО, когда я пробую приложение, которому нужен root, это занимает много времени (10 секунд), а затем терпит неудачу (я пробовал «Root Checker Basic» из магазина).

Приложение Superuser никогда не показывает никаких всплывающих окон, а также его нет в журнале. Кажется, что он автоматически отклоняет все запросы.

Итак, вот мой вопрос: правильно ли я сделал все шаги? (может быть, я упускаю что-то очень важное)

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

PS: Если вам нужна дополнительная информация, просто спросите, я постараюсь заполнить информацию, если это возможно

Дальнейшее расследование:

  • настройка автоматического разрешения в Superuser тоже не работает
  • запуск suиз терминала вызывает исключение: java.lang.SecurityException: широковещательная передача запрашивает запуск от имени пользователя -1, но вызывается от пользователя 0; для этого требуется android.permission.INTERACT_ACROSS_USERS_FULL или android.permission.INTERACT_ACROSS_USERS. Поэтому мне нужно где-то установить это разрешение.
Я не уверен на 100%, но разве он не должен suпринадлежать system:system? Насколько я знаю, на устройствах Android нет пользователя «root» (отсюда и «неверный» отрицательный идентификатор пользователя, я думаю). Может быть, вы попробуете chown system:system /system/xbin/suи посмотрите, поможет ли это. Пожалуйста, сообщите: если это сработает, я сделаю это ответом.
@Izzy Итак, я пробовал ваше предложение с различными учетными записями, системой, корнем, -1, случайными номерами ... И это странно - оно всегда терпит неудачу с одним и тем же исключением, включая «вызов от пользователя 0». Биты Suid и Sgid были правильными (тройная проверка).
uid 0 — это самый привилегированный пользователь (root в Linux), поэтому «вызов от» выглядит хорошо. Вы можете проверить, какой пользователь принадлежит этому идентификатору, «подав в суд» на него и выполнив команду id. // Кстати, я только что проверил на одном из своих устройств и должен вернуть свое предыдущее предположение: suотображается как -rwsr-sr-x root root, отличается только размер ( 104800 2013-12-31 23:32 suна моем устройстве ICS). Может быть, у вашего суперпользователя есть проблема? Проверьте ls -l /system/app/Super*, мой дает мне -rw-r--r-- root root 570342 2012-01-01 04:41 Superuser.apk.
@Иззи Интересно. Так что, возможно, я использую неправильный или устаревший файл su. Я пробовал несколько версий 3 или 4, и ни одна из них не подходила по размеру. Не могли бы вы проверить su -vего версию? И какое Superuserприложение вы используете (я имею в виду от кого)?
Я использую SuperSu (и результат 1.86:SUPERSU) на LG O4X 4.0.3 (это устройство, которое я проверял). AFAIR У меня есть суперпользователь chainfire на других моих устройствах.

Ответы (1)

Комментарии Иззи привели меня к правильному пути, поэтому мне удалось рутировать устройство. Если у кого-то еще возникла такая же проблема (программы автоматического рутирования не работают, но вы можете получить доступ к устройству с помощью adb root), вот полное руководство по рутированию телефона вручную:

  1. Установите Superuserиз ClockworkMod в Google Play прямо на свой телефон
  2. Подготовьте adb как root и сделайте /systemдоступным для записи: adb kill-server, adb root, adb remount(возможно, вам придется убить adb.exeв диспетчере задач, если он зависнет)
  3. Перетащите только что загруженный apk на свой компьютер: adb pull /data/app/com.koushikdutta.superuser-1.apk( примечание: в будущем у него может быть другое имя)
  4. На вашем ПК: откройте apk с помощью zip (например, переименуйте расширение в .zipили используйте WinRar)
  5. Скопируйте из zip system\bin\suв ваш рабочий каталог
  6. Нажмите на свой телефон:adb push su /system/xbin/su
  7. Убедитесь, что владельцем является root:adb shell chown root:root /system/xbin/su
  8. Установите биты SUID и SGID в двоичном файле:adb shell chmod 06755 /system/xbin/su
  9. Перезагрузите телефон:adb reboot
  10. Попробуйте suиз adb: adb shell, su; подсказка должна измениться с $ на #
  11. Попробуйте suс телефона: установите терминал и используйте команду suили используйте Root Checker Basicиз магазина
  12. Если suиз adb работает, но не работает с телефона, повторите весь процесс с 1, но загрузите другое Superuserприложение из маркета (например, версия ChainsDD у меня не работает)