Android root and shell root

Техника

Сейчас мы рассмотрим процесс получения root-прав на Android при помощи компьютера и через сам мобильный телефон или планшет. Сразу предупреждаем: если что-то пойдет не так, то может понадобиться перепрошивка. Поэтому, если не уверены в себе — не беритесь.

Вначале немного теории, а затем уже практика. В том числе есть видео, как получить root.

Данная статья подходит для всех брендов, выпускающих телефоны на Android 13/12/11/10: Samsung, Xiaomi, Redmi, Poco, Huawei, Honor, Lenovo, Tecno, Realme и др. Мы не несем ответственности за ваши действия.

Вы можете задать свой вопрос специалисту в конце статьи.

Под понятием «рут» нужно понимать встроенную учетную запись администратора, которая имеет расширенные возможности работы с системой Андроид, недоступные для обычных пользователей.

Рутированные девайсы используют для снятия ограничений, которые установлены производителем для защиты гаджета от потенциально опасных настроек системы, вредоносного ПО и обеспечения защиты программ от несанкционированного копирования.

Основные цели rootaing (рутинга) состоят в получения прав «суперпользователя» или «рут» на девайсах Андроид – снятие запретов оператора связи или производителя для получения возможности манипулировать системными программами и запуска приложений, для функционирования которых необходимы права администратора.

Не знаешь как решить проблему в работе своего гаджета и нужен совет специалиста? На вопросы отвечает Алексей, мастер по ремонту смартфонов и планшетов в сервисном центре.Напиши мне »

У обладателя рут-прав имеется неограниченный доступ ко всем системным файлам, несмотря на установленные ограничения прав доступа. При наличии root-прав вы получаете над своим гаджетом полный контроль.

Преимущества получения рут-прав:

  • Инсталляция приложения, которые требуют для своей работы root (драйверы, эмуляторы и пр.).
  • Доступ к программам, темам, ярлыкам, системным файлам и т.п. с возможностью их изменения.
  • Блокирование, замена или удаление предустановленного ненужного софта.
  • Установки сторонних прошивок и различных модов.
  • Активация дополнительный опций ОС Андроид.
  • Контроль работы программ (блокирование звонков, опасного ПО или оправки SMS на платные номера).
  • Возможность создания резервный копий, переноса информации.
  • Прочие привилегии.

Наличие рут-прав само по себе какие-либо преимущества не предоставляет, а дает возможность выполнять определенные действия с девайсом. Теперь рассмотрим недостатки root:

  • Отключение официальных обновлений прошивки гаджета через интернет (FOTA или OTA).
  • Лишение гарантий от производителя (не для всех устройств).
  • Отключение неразрешенного доступа и защиты от вредоносного ПО.
  • Угроза поломки девайса при неумелом использовании прав «суперпользователя».
Содержание
  1. Виды root-прав
  2. Проверяем наличие root-прав на Андроид
  3. Способы получения root-прав
  4. Отладка по USB
  5. Разрешение для инсталляции из неизвестных источников
  6. Видео как получить root на Android 6 и выше
  7. Получение root-прав при помощи программ для ПК
  8. Kingo Android Root
  9. VROOT
  10. Полный доступ при помощи приложений на Андроид
  11. KINGROOT
  12. OneClickRoot
  13. Framaroot
  14. Преимущества Root
  15. Недостатки Root
  16. Виды Root прав
  17. Как получить Root права?
  18. Как проверить, что права root получены?
  19. Итог
  20. Что такое Root?
  21. Зачем это нужно?
  22. Какие минусы и опасности получения прав суперпользователя?
  23. Как получить root на моем устройстве?
  24. Что делать, если Root так и не был получен?
  25. Смартфон или планшет
  26. Что именно дают права Root на Android
  27. Минусы при получение Root прав
  28. Что необходимо сделать перед получением Root права
  29. Виды Root
  30. Проблемы получения Root прав на новых смартфонах Samsung
  31. Проблемы получения Root на Android 4.3 и выше
  32. Что происходит когда получаете Root права на Android?
  33. Зачем нужен SuperSu или SuperUser / Kinguser?
  34. Если после получения Root прав Android глючит
  35. Зачем отключать антивирус когда получаешь Root?
  36. Так есть ли вирусы или нет?
  37. Как проверить наличие Root прав на Android?
  38. SuperOneClick
  39. Голосование
  40. Права суперпользователя в Linux
  41. Вход под суперпользователем
  42. Переключение на суперпользователя в терминале
  43. Получение прав root без переключения
  44. Графически приложения от имени суперпользователя
  45. Выводы
  46. Что такое root-права и зачем они вообще нужны?
  47. Основные способы получения root-доступа
  48. Режим отладки по USB
  49. Полный доступ с помощью программ для ПК
  50. Root-доступ с помощью программы Kingo Android Root
  51. Root-доступ с помощью программы VROOT
  52. Полный доступ с помощью программ на Android
  53. Root-доступ с помощью программы KINGROOT
  54. Разделяют root права на 3 вида:
  55. Как получить Root-права для android устройства
  56. И в завершении
  57. Dirtycow (CVE-2016-5195)
  58. SELinux
  59. Adbd и консоль
  60. Получаем root доступ
  61. Root, да не тот
  62. Пробуем отключить SELinux
  63. Копаем recovery
  64. Копаем исходники ядра
  65. Hooks

Виды root-прав

  • Full Root – постоянные и полные права без ограничений. Они позволяют получить доступ ко всем системным средствам.
  • Shell Root – это те же Full Root, только без возможности записи и перезаписи в меню system.
  • Temporary Root – временные рут-права. Время их действия составляется до первой перезагрузки гаджета.

На некоторые девайсах установить права суперпользователя нельзя. На гаджетах имеется специальная защита, которая позволяет получить только Temporary Root или Shell Root.

Проверяем наличие root-прав на Андроид

Существует несколько способов такой проверки:

  • Смотрим на список с программами, там может быть приложение Superuser или SuperSU.
  • Запускаем терминал. Когда вводится команда su, отображается приглашение, имеющее вид решетки.
  • Переходим в раздел /system/xbin при помощи файлового менеджера. Если там имеется файл su, значит рут-права получены.
  • Во время запуска некоторых программ отображается запрос о предоставлении root-прав. Если подобный запрос имеется, значит гаджет рутирован.

Способы получения root-прав

Существуют специальные программы для получения прав суперпользователя:

  • Софт на ПК.
  • Софт на гаджет Андроид.

Еще пользователю необходимо уметь выполнять такие действия:

  • Подключение девайса в режим отладки по USB.
  • Разрешение инсталляции программ из неизвестных источников.

Отладка по USB

Инструкция подходит для гаджетов с любой версией Андроид:

  • Переходим в «Настройки» девайса, выбираем меню «Специальные возможности», потом раздел «Для разработчиков».
  • как получить root на Android
    Увеличить

    Как получить root-права на Android и что это такое

  • Переключатель устанавливаем в положение «Включено» против строки «Отладка по USB». Свое действие подтверждаем.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

  • После подключения гаджета к ПК отобразится сообщение о включении отладки в строке уведомлений.

Разрешение для инсталляции из неизвестных источников

Переходим в меню «Безопасность» в «Настройках». В положение «включено» устанавливаем переключатель рядом с пунктом «Неизвестные источники».

Как получить root-права на Android и что это такое

Вся подготовка завершена, теперь приступаем непосредственно к рут-правам.

Видео как получить root на Android 6 и выше

https://youtube.com/watch?v=NonGXDAbo4M%3Fstart%3D24

Получение root-прав при помощи программ для ПК

Kingo Android Root

  • Скачиваем софт Kingo Android Root с ресурса https://www.kingoapp.com на ПК.
  • Инсталлируем программу.
  • Как получить root-права на Android и что это такое

  • На гаджете включаем режим отладки по USB. Разрешаем установку софта из неизвестных источников.
  • Запускаем Kingo Android Root. После этого подключаем по кабелю USB ваш девайс к ПК.
  • Как получить root-права на Android и что это такое

  • Когда гаджет будет обнаружен, а все драйверы инсталлированы, нажимаем «ROOT». Запустится процесс взлома системы. После выполнения процесса необходимо перезагрузить гаджет.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

VROOT

Если предыдущая программа получить рут-доступ не смогла, то, скорее всего, ваш Андроид гаджет китайского производства. В этой ситуации стоит использовать программу VROOT:

  • Скачиваем софт с оф. сайта http://www.mgyun.com/vroot на ПК. Программа на китайском языке, поэтому следует быть внимательным. Для загрузки нажимаем на зеленую кнопку, как на скриншоте ниже.
  • Как получить root-права на Android и что это такое

  • Инсталлируем софт. Процесс установки аналогичен любой другой программу, просто смотрим на картинки и выполняем. Важно поставить галочку для запуска софта (последний скриншот).
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

  • Включаем на гаджете режим отладки, разрешаем установку софта из неизвестных источников.
  • Подключаем девайс при помощи провода USB, нажимаем на кнопку «Root». Ожидаем завершение процесса получения рут-прав.
  • Как получить root-права на Android и что это такое

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

Полный доступ при помощи приложений на Андроид

KINGROOT

  • С официального сайта https://kingroot.net скачиваем установочный файл для гаджета Андроид. Нажимаем «Бесплатная загрузка», подтверждаем сохранение файла. На скриншоте ниже видно адрес сайта и отображено, что следует делать. Статус загрузки доступен в строке уведомлений. Скачивать установочный файл желательно через Wi-Fi.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

  • Теперь следует установить программу. Разрешаем инсталляцию из неизвестных источников. Потом переходим в каталог загрузок, где выбираем необходимый файл. На скриншотах ниже все детально показано.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

  • Нажимаем на кнопку «Установить» для инсталляции приложения.
  • Как получить root-права на Android и что это такое

  • На одном из рабочих столов находим ярлык программы Kingroot. Нажимаем на него для запуска. Приложение сразу начнет определять модель гаджета и наличие на нем рут-прав.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

  • Когда определение будет завершено, нажимаем на значок «TRY TO ROOT», чтобы получить рут-права. Ожидаем перезагрузку девайса, что сообщит о завершении процесса взлома Андроид.
  • Как получить root-права на Android и что это такое

    Как получить root-права на Android и что это такое

OneClickRoot

Данное приложение является платным – 30 долларов. Работать с OneClickRoot намного легче, после процесса сканирования будет сообщено о том, сможет ли оно на вашем гаджете предоставить рут-доступ.

  • Скачиваем софт с оф. сайта https://www.oneclickroot.com и устанавливаем его, как показано на скриншотах ниже.
  • После входа в приложение пользователю сразу будет предложено получить root. Для этого нажимаем на «Root Device». Потом просканируйте свой гаджет на предмет того, способен ли софт открыть рут-доступ к системе. Если прав суперпользователя нет, отобразится сообщение, как ниже на 3-ем скриншоте. Можно нажать на «Notify Me», когда требуется, чтобы проинформировали вас о том, что приложение сможет вам помочь.
  • Если есть возможность предоставления рут-прав, то будет отображен такой экран. Нажимаем «Root Device».
  • Как получить root-права на Android и что это такое

Framaroot

  • Скачиваем и устанавливаем приложение «Фрамарут» на гаджет Андроид.
  • Запускаем программу. Если ваш девайс приложением поддерживается, то на главном экране отобразится список с возможными действиями, среди которых будет и удаление или получение рут-прав. Ниже на скриншоте показаны названия эксплоитов, которые доступны для использования.
  • Как получить root-права на Android и что это такое

  • Затем предлагается установить приложения Superuser или SuperSU. Особой разницы между ними нет, поэтому все зависит от ваших предпочтений. Еще будет указана возможность unroot (анрутинга), т.е. удаление имеющихся рут прав.
  • Нажимаем на указанный пункт и ожиданием появления сообщения про успешное окончание процедуры получения рут-прав.
  • После успешного рутирования девайс перезагружаем.

Мастер Николай

Инженер по ремонту мобильной и компьютерной техники в специализированном сервисном центре, г. Москва. Непрерывный опыт работы с 2010 года.
Есть вопросы? Задавайте в комментариях к статье. Отвечать стараюсь максимально быстро вам на указанную почту. Каждый случай индивидуален и поэтому очень важно, чтобы вы максимально расписали свою проблему и какая у вас модель устройства.

Что такое Root-права на Android слышали многие, но далеко немногие получили их из опасения навредить своему устройству. Вероятно, отчасти они правы, ведь имея доступ к учетной записи главного администратора, вы автоматически получаете не только полный контроль над операционной системой с возможностью настройки вашего устройства в соответствии со своими предпочтениями, но и лазейку для непрошеных гостей.

Преимущества Root

В первую очередь, получение Root дает возможность удалять стандартные приложения, навязываемые производителями устройств, менять темы и ярлыки, а так же запускать специализированные приложения, существенно расширяющие возможности смартфона (обычно такие приложения требуют Root-прав). Кроме того, появляется возможность изменять системные файлы (Recovery image, Bootloader или изображения, выводимые при загрузке), запускать исполняемые файлы Linux, устанавливать приложения на карту памяти или переносить на нее кэш программ. В отдельных случаях после модификаций ОС, доступных только после получения Root-прав, возможно даже добиться небольшого, но все же увеличения производительности времени автономной работы.

Недостатки Root

Как и во всем другом, в получении Root доступа имеются свои недостатки. В первую очередь, устройство лишается гарантии и в случае «чего-то такого», при условии, что вы не сможете откатить свой «девайс» на официальную прошивку, ремонтировать его придется исключительно за свой счет.

Процедура рутования несложная — делая все в соответствии с описаниями можно добиться желаемого, но если у вас нет никакого опыта, потенциальный риск сохраняется —  при неблагоприятном стечении обстоятельств устройство может превратиться в непригодный для использования «кирпич».

Еще один немаловажный недостаток — открытие Root-привилегий подразумевает вмешательство в системные файлы и влечет за собой  потерю возможности обновляться «по воздуху» (устанавливать OTA обновления). Точнее, возможность обновляться  может и не пропасть, но последствия обновления будут непредсказуемыми.  Самое безобидное из них — потеря root-привилегий, но возможны и более фатальные варианты — вплоть до получения «кирпича».

Виды Root прав

Cуществует несколько видов Root прав:

  • Full Root — постоянные права, снимающие установленные ограничения. Обновлять операционную систему не рекомендуется.
  • Shell Root – аналог Full Root, но без доступа к папке system.
  • Temporary Root – временный Root доступ. После перезагрузки устройства он пропадает.

Как получить Root права?

На форуме 4PDA описана масса универсальных способов и методов получения Root прав на устройствах под управлением Android. Большинство из них подразумевает использование специальных программ и компьютера. Среди таких программ хорошо известны Universal AndRoot, Unlock Root, z4root, Revolutionary и другие, обещающие получение желаемого в «два клика». К сожалению, не все из них способны на 100% помочь добиться желаемого, конкретно для вашего мобильного устройства. Более того, подобное программное обеспечение может определяться как вирусное, так как оно вносит изменения в ядро операционной системы Android. В данном случае антивирус отчасти прав — все эти программы являются вирусными эксплоитами, проникающими в ядро системы и при их скачивании или установке рекомендуется отключить защитное ПО.

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

В телефонах с NAND lock сделать Root все же можно, но он будет неполнофункциональным (можно получить только Shell root или Temporary Root). Уточнить, имеет ли Ваш аппарат NAND lock, можно в ветке обсуждения Вашей модели в разделе Android — Устройства.

Дополнительно:  Doctor taiga mongolian oak root био бальзам

Как проверить, что права root получены?

  1. Возможно (но не обязательно) появление в списке программ приложения под названием Superuser или SuperSU
  2. При запуске программ, требующих привилегий root, будет всплывать соответствующий запрос
  3. Программы, которые ранее не работали, ссылаясь на недостаток прав, теперь полностью функциональны
  4. В эмуляторе терминала при вводе команды su появляется приглашение в виде решетки: #
  5. Этот способ проверки зависит от метода получения root-прав (например, при использовании Universal Androot этот способ проверки неприемлем). В эмуляторе терминала наберите команду «/system/bin/id»[Enter]. Если в ответ вы получите «uid=0(root) gid=0(root)», то вы добились желаемого.

Итог

Теперь вы знаете зачем в операционной системе Android нужно получать Root-права. Некоторые пользователи считают, что Root необходим, а другие и без него живут достаточно неплохо. Выполнять эту процедуру или нет – решать только вам, только не забывайте про гарантию и все будет хорошо.

1. Как убедиться, что root-права получены?

Сообщение отредактировал Бодтэк — 17.11.10, 00:02

Уровень сложности: для продвинутых. Несмотря на то, что операционная система Android является гораздо более открытой, чем большинство конкурентов, все же в ней тоже существуют свои запреты и ограничения. Обычному пользователю не позволят бесцеремонно вмешиваться в работу системных программ, удалять важные файлы или делать потенциально опасные настройки. Однако, все эти возможности становятся доступны в том случае, если владелец получает права суперпользователя или так называемый root. В этой статье мы расскажем, какие дополнительные возможности это дает, чем опасно и как это сделать.

Что такое Root?

Рутирование устройства означает получение прав суперпользователя, что примерно соответствует аналогичному понятию из мира Linux. Благодаря этому вы сможете выполнять практически любые действия, в том числе потенциально опасные. Другими словами, это получение полного контроля над своим устройством.

Зачем это нужно?

Среди преимуществ можно выделить следующее:

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

Какие минусы и опасности получения прав суперпользователя?

В Интернете достаточно страшилок по этому поводу и некоторые из них имеют под собой почву. Итак, среди недостатков root замечены следующие:

  • это лишает вас гарантии (на самом деле все признаки этой операции можно устранить);
  • вы не сможете получать обновления по воздуху от производителя;
  • в некоторых случаях процедура получения прав суперпользователя грозит выходом из строя вашего устройства (но чаще всего гаджет можно оживить).

Как получить root на моем устройстве?

Процедура получения прав суперпользователя, как правило, не сложная и при внимательном выполнении всех инструкций проходит без всяких проблем. Более того, создано несколько универсальных утилит, которые автоматизируют этот процесс и делают доступным даже самым начинающим пользователям. Одной из самых известных является Framaroot. Эта программа позволяет рутировать очень большое количество разных устройств. И даже если название вашего гаджета отсутствует в списке поддерживаемых, все равно имеет смысл попробовать, так как есть довольно большая вероятность получения root, а негативных последствий точно не будет.

Итак, для получения root с помощью программы Framaroot необходимо выполнить следующие действия.

2. Установите программу из загруженного apk-файла на свое устройство.

Как получить Root в Android и стоит ли это делать

3. Запустите утилиту. В том случае, если устройство поддерживается программой, то на главном экране вы увидите выпадающий список возможных действий, среди которых есть варианты для получения и удаления root. Кроме этого, чуть ниже имеется одно или несколько названий эксплоитов, которые доступны для применения.

Как получить Root в Android и стоит ли это делать

4. Тапните по одному из доступных эксплоитов и через пару секунд появится подсказка, описывающая результаты его работы. Если один способ не срабатывает, то попробуйте другой. Иногда бывает, что при получении прав суперпользователя Framaroot аварийно закрывается. В этом случае просто перезапустите программу и попробуйте еще раз.

Как получить Root в Android и стоит ли это делать

5. Как только вы получите подсказку, что устройство успешно рутировано, следует перезагрузить устройство.

Что делать, если Root так и не был получен?

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

If I’m understanding your question correctly, you’re asking how to get root access automatically when you run adb shell, so that you don’t have to go into the shell and type su to execute a command as root on your phone.

This is controlled by a flag in your boot partition, which most custom ROMs have modified to allow root permission by default. If you get dropped to a $ when you use adb shell then you have two permanent options and one temporary one (temporary meaning that it doesn’t stick if you reboot):

  1. Flash a ROM that includes the modification
  2. Create a custom boot.img and flash it to your phone
  3. Restart adbd on your device with root permissions

Number 2 is actually not that difficult, but it can be somewhat dangerous if you’re careless. There is a wiki article here which explains the process and includes a couple of Perl scripts to help you. These instructions assume a Linux/Unix environment. I have personally used these instructions on Fedora Linux and can tell you that they work, but I do not know about other *nix environments like Macs. I also do not know of any similar Windows instructions, but I could try to track some down if you are on Windows. The exact commands will vary somewhat from phone to phone since different devices use different partition tables.

Generally speaking, though, you need to pull your current boot.img from your phone, unpack it, extract the ramdisk, and find the default.prop file. This is a plaintext file, which you need to open in a text editor and then find the line that contains the value ro.secure. If the line says ro.secure=1 then you need to change it to ro.secure=0. After that you can re-pack the ramdisk and boot.img, then flash it to your phone. Once you reboot, you will be greeted with a # prompt whenever you perform adb shell without having to run su.

Alternatively, if you are using a custom ROM but it doesn’t have this modification, you can just unzip the ROM and modify the boot.img that is included with it using the above steps. Then you can zip up the ROM with the newly modified boot.img and flash the zip file as you normally would.

This probably goes without saying, but be careful when doing this. Messing with your boot partition can quite easily wreck your phone and force you to recover via HBoot. I would highly recommend testing Fastboot to makes sure you can use extended Fastboot commands and perform a recovery. This varies a bit based on your model, but most phones have some sort of desktop software that can be run to reflash the phone as well.


Что такое Root Android? Почему его хотят получить? Зачем он нужен на Android? Частые вопросы которые задают многие новички выбрав смартфон или планшет на данной ОС и много другой полезной информации о Root!
права на ваш Android

Смартфон или планшет

Для тех кому не терпится получить Root права и не важно что это такое, перейдите в специальный раздел сайта, где можно найти 1000 способов получения Root именно на ваш Android
таких фирм как Samsung, HTC, Sony Lenovo, LG, Alcatel и другие смартфоны и планшеты! Либо воспользоваться списком лучших программ для получения Root прав
.

В Unix и ОС Android в частности пользователи, которые выполняют действия (просмотр видео, прослушивание аудио, редактирование документа), работают с правами Гостя, то есть не могут редактировать или изменять/удалять/модифицировать системные файлы, увеличивать функционал системы, данную возможность имеет только главный Администратор или как его правильно нужно назвать Суперпольватель.

Что именно дают права Root на Android

  • Возможность замораживать и восстанавливать прошивку на Android устройстве
  • Удалять рекламу с приложений
  • Удалять встроенные приложения и мелодии
  • Встраивать приложения и мелодии
  • Изменять внешний вид Android до не узнаваемости (изменять иконки, менять фон), всячески редактировать apk , системных приложений
  • Продлить срок работы от одного заряда (если заряда хватало вам на 1 день, то с получением root прав можно увеличить срок автономности на 1,5 — 2 дня)
  • Увеличить быстродействие и отзывчивость Android
  • Разгонять или понижать скорость процессора

Вы спросите почему тогда на ОС Android изначально не встраивают Root чтобы сразу расширить данную функциональность?

Минусы при получение Root прав

Помимо выше изложенных минусов, можно также отнести также:

  • Официальные обновления прошивок (можно выполнить все в вручную)
  • Отключение фирменных фишек производителя

Также получив Root Вы автоматически теряете гарантийный ремонт!
Но не отчаивайтесь, получив Root его можно и также не заметно удалить, тогда не один сервисный центр не сможет отказать вам в ремонте.

Что необходимо сделать перед получением Root права

Определенные производители, например Sony и HTC ставят еще дополнительные палки в колеса, блокируя Bootloader Android. Как разблокировать bootloader можно узнать из данных статей

  • Разблокировать bootloader Sony
  • Разблокировать bootloader HTC
  • Разблокировать bootloader Huawei
  • Разблокировать bootloader Nexus
  • Разблокировать bootloader LG
  • Разблокировать bootloader Xiaomi
  • Разблокировать bootloader Motorola

Помимо этого в смартфонах HTC после разблокировки bootloader и получения root прав необходимо выполнить процедуру S-OFF .

Виды Root

Root на Android различают как:

  • Full Root
    — это постоянные root права, которые не удаляются после перезагрузки или случайным образом, с возможностью записи и перезаписи в раздел system
  • Shell Root
    – постоянные root права также, но в отличие Full Root нет возможности записи и перезаписи в раздел system
  • Temporary Root
    – временные Root права. К сожалению данные Root права исчезают (слетают) после первой перезагрузки Android

Проблемы получения Root прав на новых смартфонах Samsung

Проблемы получения Root на Android 4.3 и выше

Начиная с Android 4.3, в ядре Linux присутствует дополнительная прослойка безопасности под названием SeLinux
. При установке root прав и первой загрузке устройства Android, SeLinux просто напросто портит бинарные файлы su и busybox, то есть соответственно root прав нет.

Что происходит когда получаете Root права на Android?

На Android смартфон или планшет идет установка бинарного файла SU
, который как раз и отвечает за root права. Данный файл устанавливается по пути /system/xbin/su
. Также для корректной работы Android после его рутирования иногда необходим файл busybox, который увеличивает в разы возможности рутированного устройства.

Зачем нужен SuperSu или SuperUser / Kinguser?

В сети Internet пользователи Android часто задают вопросы:

Если после получения Root прав Android глючит

В очень редких ситуациях бывает, что Android смартфон или планшет глючит (возникают частые ошибки, не работают некоторые функции) после получения root прав. Для решения данной проблемы вам может помочь сброс данных или как принято его называть в Android среде «wipe» (вайп) . Сброс данных можно выполнить зайдя в меню настроек -> восстановление и сброс, либо из меню Recovery выбрав пункт wipe data/factory reset .

Зачем отключать антивирус когда получаешь Root?

В сети часто можно встретить жалобы новичков которые только что приобрели Android и хотят уже получить Root права, что при скачивание ругается Google Chrome, а после и анитвирусник на компьютере ругается на наличие вирусов! Это происходит потому что происходит взлом системы Android
через различные уязвимости найденные в системе (к примеру Framaroot
использует уязвимость в камере), естественно компания Google не одобряет такие действия и не хочет чтобы вы вмешивались в систему Android (см. выше).

Так есть ли вирусы или нет?

Вирусов нет! Поэтому смело отключайте антивирусник, ничего с вашим компьютером или Android смартфоном или планшетом не произойдет!

Как проверить наличие Root прав на Android?

Довольно частый вопрос у пользователей которые только приобрели Android планшет или смартфон, либо не интересовались работой операционной системой вовсе.

Первый вариант
чтобы узнать удалось ли вам получить Root права — это зайти с помощью файлового менеджера в раздел /system/xbin
и найти там файл su
, если он есть, значит root получен.

Перед тем как я перейду к списку программ, дам определение – что такое Root права и зачем они, собственно, нужны
.

Root права – иногда их еще называют права супер пользователя (суперюзера). Права, которые позволяют вносить изменения в системные файлы и папки. Данные права можно получить несколькими способами: самостоятельно (довольно сложная процедура) или с помощью специального программного обеспечение как устанавливаемые на само Андроид устройство, так и на персональный компьютер.

Ниже мы рассмотрим самые популярные и, разумеется, рабочие программы, которые позволяют получить Root права на своем мобильном Андроид устройстве: смартфоне или планшете.

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

Самая популярная программа для получения Root прав – Framaroot . По большому счету, данная программа является посредником между вами (или вашим гаджетом) и инструментом SuperSU. Отличие лишь в том, что Framaroot позволяет использовать вышеозначенное программное обеспечение без использования персонального компьютера. Для получения рут прав сделайте следующее: установите приложение и нажмите кнопку «Установить SuperSU»
.

Дополнительно:  Root для grand prime

По прошествии нескольких минут вы получите уведомление об успешном или неуспешном получении Root прав на вашем Андроид устройстве.

Еще одна программа для получения рут (root) прав на ваше мобильное устройство. Данная программа позволит вам получить желаемый результат без использования персонального компьютера (как это происходит при использовании большинства программ для получения рут (root) прав). Приложение устанавливается на ваш смартфон или планшет.

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

  1. Загрузите приложение на свое устройство;
  2. После запуска вам нужно выбрать версию необходимой прошивки;
  3. Теперь осталось нажать кнопку GET ROOT.

Все, перезагрузите устройство.

Если вам не подошли программы описанные выше, то можете воспользоваться еще одним популярным инструментом для рутирования вашего Андроид устройства — z4root. Ниже вы можете найти небольшую инструкцию по работе с данной программой:

  1. Произведите отладку вашего мобильного устройства по USB;
  2. При первом запуске программы выберите один из двух вариантов получения рут прав: Temporary Root (временные) или Permanent Root (постоянные);
  3. После завершения процесса рутирования, вам нужно перезапустить устройство.

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

Еще одно небезызвестное приложение для получения рут прав на мобильных устройствах. По утверждениям разработчиков, данная программа поддерживает около 15 000 устройств
. Т.е. есть большая доля вероятности, что данное приложение поможет получить рут права именно для вашего Андроид гаджета. Выполните следующие шаги:

  1. Вам нужно скачать и установить специальный apk файл с приложением;
  2. Далее запустить программу;
  3. Нажить кнопку Root и перезапустить девайс;
  4. Наслаждаться рут правами.

SuperOneClick

Если по каким либо причинам получить рут права не удается, то можно воспользоваться программами на персональный компьютер. Одна из таким программ называется SuperOneClick
. Итак, для получения желаемого результата воспользуйтесь следующей инструкцией:

  1. Скачайте и установите программу, подключите ваше Андроид устройство к персональному компьютеру;
  2. На устройстве отключите отладку по USB;
  3. Запустите программу и нажмите кнопку “Root”;
  4. После появления надписи «Waiting for Device», вам нужно включить на устройстве режим отладки по USB;
  5. Ждите появления надписи «Starting ADB Server…»;
  6. Отключите отладку по USB и снова включите;
  7. Повторяйте предыдущую операцию пока не увидите надпись — «Waiting for device…».

Голосование

Если вы воспользовались одной из предложенных в списке выше программой и успешно получили Root права, то, пожалуйста, поделитесь своими результатами – проголосуйте за рабочий вариант.

Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.

В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.

В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.

Права суперпользователя в Linux

Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:

  • Читать, писать и изменять атрибуты файлов в своем каталоге
  • Читать, писать, изменять атрибуты файлов в каталоге /tmp
  • Выполнять программы там, где это не запрещено с помощью флага noexec
  • Читать файлы, для которых установлен флаг чтения для всех пользователей.

Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.

Вход под суперпользователем

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

Переключение на суперпользователя в терминале

Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:

$ su
опции
пользователь

Вот ее основные опции:

  • -c, —command
    — выполнить команду
  • -g, —group
    — установить основную группу пользователя (только для root)
  • -G —supp-group
    дополнительные группы пользователя (только для root)
  • -, -l, —login
    — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, —preserve-environment
  • -s, —shell
    — задать оболочку для входа
  • —version
    — отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:

Теперь смотрим что получилось:

Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.

И повторим ту же комбинацию:

Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

Получение прав root без переключения

Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:

$ sudo
опции
команда

  • -b
    — выполнять запускаемую утилиту в фоне
  • -E
    — сохранить переменные окружения
  • -g
    — запустить команду от группы
  • -H
    — использовать домашний каталог
  • -l
    — показать список полномочий в sudo для текущего пользователя
  • -r
    — использовать для команды роль SELinux
  • -s
    — использовать оболочку
  • -u
    — запустить команду от имени пользователя, если не задано используется root
  • -i
    — не выполнять команду, а войти в оболочку, эквивалентно su —

Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:

$ sudo -u test ls

Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.

Графически приложения от имени суперпользователя

Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.

Просто наберите gksu или kdesu, а затем нужную команду:

Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:

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

Выводы

Вот и все. Теперь вы знаете как получить права суперпользователя в Linux, знаете как использовать команду sudo и в чем разница sudo или su. Теперь программы, требующие дополнительных привилегий в системе, не вызовут у вас проблем. Если остались вопросы, пишите в комментариях!

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

Статья состоит из следующих разделов:

Что такое root-права и зачем они вообще нужны?

Когда вы покупаете новый смартфон, то замечаете на нем множество программ, которые, скажем, как есть – вам вообще не нужны. Но что происходит – вы не можете их удалить. При этом они еще и занимают место в памяти!
Так вот, root-права – это полный доступ к системе. Вы можете делать все, что хотите, от смены значка на системном приложении до его удаления.

Основные преимущества полного доступа:

  • возможность работы с системными приложениями;
  • возможность «наделить» любое из приложений полным доступом к системе;
  • неограниченная работа с интерфейсом: меняйте значки, темы, системные звуки, приветствие и картинку или анимацию при включении;
  • полный доступ к bootloader, что позволяет менять прошивку без затруднений;
  • возможность устанавливать приложения сразу на карту памяти;
  • резервная копия со всеми приложениями, которые на тот момент установлены в системе;
  • особый системный менеджер, позволяющий вам видеть и редактировать скрытые ранее системные файлы.
  • вы потеряете гарантию на устройство;
  • вы можете повредить операционную систему, если будете делать действия, в которых не уверенны. Поэтому: удаляйте, добавляйте, изменяйте, но только если уверенны в верности своих действий.

Основные способы получения root-доступа

Естественно, есть специальные программы, облегчающие это дело. Я условно разделю их на два типа:

  • программы на ПК;
  • программы на android-устройство.

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

  • подключать устройство в режиме отладки по USB;
  • разрешать установку приложений из неизвестных источников.

Режим отладки по USB

Алгоритм действий довольно прост и аналогичен на устройствах с любой версией Android OS.
1. Зайдите в настройки вашего устройства и выберите раздел «Специальные возможности», пункт «Для разработчиков».

2. Установите переключатель в положение «включено» напротив пункта «Отладка по USB». Подтвердите свое решение.


3. После подключения устройства к ПК, в строке уведомлений вы увидите сообщение о включении отладки.

Разрешение для установки из неизвестных источников

Войдите в настройки, в раздел безопасность. Установите переключатель в положение «включено» напротив пункта «Неизвестные источники».

Все, с подготовкой закончили, теперь переходим непосредственно к root-правам.

Полный доступ с помощью программ для ПК

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

Root-доступ с помощью программы Kingo Android Root

2. Установите программу.

один из скриншотов при установке программы KingoRoot

4. Далее запустите программу Kingo Android ROOT. Только после этого подключите ваше устройство к ПК по USB-проводу.

5. Когда устройство будет обнаружено и все драйвера установлены, нажмите «ROOT». Начнется процесс взлома системы. Когда он будет выполнен, перезагрузите ваше устройство.

Надеюсь, вам все понятно. Перейдем к следующему способу.

Root-доступ с помощью программы VROOT

2. Теперь установите программу. Процесс установки, идентичен любой другой, просто смотрите по картинкам и выполняйте. Не забудьте поставить галочку для запуска приложения (последний скриншот).

3. Теперь нужно включить на вашем устройстве Режим отладки по USB и разрешить устанавливать приложения из неизвестных источников.

4. Подключите устройство через USB-провод. И нажмите кнопку «Root». Дождитесь окончания процесса получения root-доступа.

Это, по моему мнению, две лучших программы данной категории. Просто выполняйте все действия, как описано выше и у вас все получится.

Полный доступ с помощью программ на Android

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

Root-доступ с помощью программы KINGROOT

Примечание:

при скачивании установочного файла желательно иметь подключение к высокоскоростному Интернету через WiFi.
2. Теперь нужно установить приложение. Перед этим разрешите установку из неизвестных источников. Затем зайдите в каталог загрузок и нажмите на соответствующий файл. Все показано на картинках, будьте внимательны.

Помните, если вы не совсем продвинутый пользователь и не разобрались зачем и как применять root-права, лучше воздержаться от получения доступа к системе андроида, так как есть риск, потерять безвозвратно функциональность вашего устройства и он попросту станет “кирпичом”.

Разделяют root права на 3 вида:

1. Full Root
— постоянное действие root-прав без ограничений

2. Shell Root
— root-права, без доступа к папке /system.

3. Temporary Root
— временные root-права.

Как получить Root-права для android устройства

На самом деле способов получения рут прав сейчас насчитывается огромное количество, для разных андроид смартфонов они свои. Здесь приведены 5 самых универсальных способов, подходящих для большинства телефонов на android:

  1. Framaroot
    — приложение, имеющее самый большой список поддерживаемых смартфонов;
  2. Kingo Android ROOT
    — универсальная утилита;
  3. z4root
    — приложение, процесс получения прост и насчитывает всего два клика, возможность получения как постоянных так и временных прав;
  4. SuperOneClick
    — программа для ПК, позволяет через USB установить root-права;
  5. Universal AndRoot
    — простое приложение, работающее на многих устройств.
Дополнительно:  The root master

И в завершении

Все выше перечисленные программы и приложения необходимые для получение root прав будут определятся антивирусными программами как троянские вирусы. По правде говоря это и есть вирусные программы, проникающие внутрь системы. Поэтому не пугайтесь а заранее отключите “антивирусник”.

Конечно быть продвинутым пользователем не означает, что вы должны взламывать систему, можно использовать и без взлома, самую открытую ОС в мире и получать больше возможностей, чем в других мобильных системах. А если уж решили воспользоваться правами администратора, трижды подумайте и спросите себя — нужны ли вам права суперпользователя, так как не корректные изменения в ОС могут привести к непоправимым последствиям, проще говоря ваш смартфон превратится в «кирпич».

Мой первый Android телефон Galaxy Note N7000 был приобретен сразу после анонса в октябре 2011 года. Благодаря одному немецкому умельцу под ником bauner, у меня была возможность использовать последнюю версию CyanogenMod (ныне LineageOS). До тех пор, пока полтора года назад телефон не умер от китайской автомобильной зарядки.

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

За полтора года было выпущено всего одно обновление — фикс падения ядра от специально сформированного ping пакета. А Android KitKat уже год назад был не первой свежести. Root доступ на этот телефон так никто и не получил, и никакой информации о нем не было. Отмечу, что тоже самое железо используется в американской версии телефона Kyocera Brigadier E6782, в котором по-умолчанию активизирован режим fastboot и нет ограничения на запуск неподписанных ядер (именно запуск, а не прошивку, и только при использовании непропатченного bootloader’а, CVE-2014-4325) и присутствует возможность загружаться в эти режимы путём зажатия кнопок телефона. Стараниями Verizon (а может Kyocera?) версия Android на Brigadier была обновлена до Lollipop.

Итак, я решил разобраться с процессом получения root на Android самостоятельно.

Два месяца назад я ничего не знал об устройстве Android (а сейчас я еще больше не знаю). Большую часть знаний пришлось добывать изучением исходных кодов и экспериментами, т.к. информации о взломе Android в интернете очень мало. Последующее описание справедливо для Android 4.4 KitKat, но не исключено, что оно заработает и на более новых версиях.

Хочу обратить ваше внимание на то, что в данном обзоре описан исключительно мой конкретный опыт взлома Android на конкретной модели телефона, поэтому будьте предельно осторожны с его применением в своей практике, если не хотите внезапно получить мертвый телефон. Перед началом исследований я рекомендую забыть о том, что вы пользуетесь взламываемым телефоном в повседневной жизни и сделать backup с последующим hard reset. Это обезопасит ваши данные при совершении ошибки.

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

Все исследования проводились в Linux окружении.

Dirtycow (CVE-2016-5195)

Простыми словами dirtycow (рабочий эксплойт под Android) позволяет заменить память любого процесса (полезно, если хорошо знаешь ASM) или любой доступный для чтения файл, даже если он находится на readonly файловой системе. Желательно, чтобы подменяемый файл был меньше либо равен по размеру заменяемому. Основная атака в dirtycow для Android — подмена /system/bin/run-as — подобие sudo для отладки приложений. Начиная с API android-19 (таблица соответствия версий API и Android) /system/bin/run-as имеет CAP_SETUID и CAP_SETGID capabilities флаги (в старых версиях используется обычный suid bit — 6755).

$ getcap bin/run-as 
bin/run-as = cap_setgid,cap_setuid+ep

Если файловая система будет примонтирована в режиме read-write, то всё, что dirtycow подменяет, окажется на файловой системе. Потому необходимо сделать backup оригинального файла и восстановить его после получения доступа, либо не перемонтировать файловую систему в режиме read-write. Как правило раздел /system в Android по умолчанию примонтирован в режиме read-only.

Не зря dirtycow считается одной из серьезнейших уязвимостей, обнаруженных в Linux. И при наличии знаний с помощью dirtycow можно обойти все уровни защиты ядра, в том числе и SELinux.

SELinux

Для начала можно почитать как работают контексты SELinux. Неплохая статья на wiki Gentoo: https://wiki.gentoo.org/wiki/SELinux/Tutorials/How_does_a_process_get_into_a_certain_context

Если коротко, то:

  • контекст процесса SELinux менять можно, если подобная операция описана в правилах sepolicy. В версии Android 4.4 (KitKat) есть возможность повысить привилегии, изменяя контекст. Но начиная с 5.x это уже сделать нельзя.
  • существуют контексты файлов.
  • Кроме контекста файлов и процессов в Android реализованы контексты для параметров property_contexts.

Adbd и консоль

$ capsh --decode=0000001fffffffff

Текущий SELinux context можно просмотреть командой id или cat /proc/self/attr/current. Предыдущий контекст процесса можно просмотреть командой cat /proc/self/attr/prev.

Просмотр context’а файлов: ls -Z
Просмотр context’а запущенных процессов: ps -Z

Получаем root доступ

Root, да не тот

Первое, что я сделал это использовал dirtycow по прямому назначению — подменил /system/bin/run-as, который задал UID/GID в 0 (тоже самое делает su). Однако монтировать файловую систему я не мог, даже tmpfs. Загружать модули ядра я тоже не мог. Просматривать dmesg — нет. Я даже не мог просматривать директории, которые имели права 700 и принадлежали другим системным пользователям. Я мог лишь читать и писать в блочные устройства, а просмотр файлов или директорий был возможен благодаря заданию UID/GID определенного пользователя (написал свой велосипед — аналог su, который мог задавать selinux context и пользователя/группу).

Первым делом я сделал дамп всей прошивки, boot и recovery:

$ dd if=/dev/block/mmcblk0 of=/storage/sdcard1/mmcblk0.img
$ dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/storage/sdcard1/boot.img
$ dd if=/dev/block/platform/msm_sdcc.1/by-name/recovery of=/storage/sdcard1/recovery.img

Изучить дамп можно утилитами kpartx и unpackbootimg. Команда kpartx -a mmbblk0.img создает виртуальное блочное устройство, доступное по пути /dev/mapper/loop0. С ним можно работать как с любым другим блочным устройством. Дампы разделов boot и recovery распаковал утилитой unpackbootimg.

Потом попробовал записать в recovery /dev/zero, проверить и сразу восстановить из дампа.

Раз я мог писать в блочные устройства, значит я мог записать custom recovery. Нашел TWRP от Brigadier, прошил в recovery и перезагрузился в него adb reboot recovery. TWRP я не увидел, а лишь иконку Android’а с восклицательным знаком. Так выглядит стандартный recovery, а значит TWRP не прошился.

Пробуем отключить SELinux

На тот момент я думал, что все ошибки об отсутствии привилегий вызваны SELinux (я полностью забыл о том, что могут быть урезаны capabilities). Логов dmesg я не видел, logcat ничего релевантного не показывал. И я начал думать как отключить SELinux.

Первая зацепка, которую я смог найти:

$ grep -A2 reload_policy boot/ramfs/init.rc 
on property:selinux.reload_policy=1
    restart ueventd
    restart installd

Исходники говорят о том, что при изменении этой опции, init перезагружает политики SELinux из файла /sepolicy.

Т.е. я при помощи dirtycow могу перезаписать /sepolicy и командой setprop selinux.reload_policy 1 загрузить обновленную политику.

Для начала нужно выяснить что из себя представляет /sepolicy. Изучить его можно с помощью команды sesearch (пакет setools в Debian).

$ sesearch --allow sepolicy
$ sesearch --neverallow sepolicy
$ sesearch --auditallow sepolicy
$ sesearch --dontaudit sepolicy

В моём случае /sepolicy содержал только allow, что значит — при enforcing режиме SELinux в Android разрешено делать только то, что объявлено в политике. А процессу init разрешалось только загружать политику, но не отключать:

$ sesearch --allow sepolicy | grep 'load_policy'
   allow init kernel : security load_policy ;

Моей задачей было — разрешить init контексту задать selinux->enforce в permissive (setenforce 0).

Первое, что я сделал — собрал стандартную политику стокового Android, подменил оригинальный /sepolicy, загрузил (под root пользователем setprop selinux.reload_policy 1) и получил сообщение в статусной строке, что телефон находится в незащищенном режиме. После этого телефон отказывался запускать приложения, стал очень задумчив, задать permissive режим мне тоже не удалось и в конечном итоге телефон перезагрузился. Отрицательный результат тоже результат, замена /sepolicy сработала.

Первая же мысль: стоковая политика не подходит этому телефону и он при отсутствии прав начинает тупить.

Я собрал новую политику, в которой просто описал все существующие SELinux context и объявил их permissive. Тоже не помогло.

Потом я решил пересобрать политику и по возможности добавить привилегии для shell контекста.

Я нашел статью, в которой говорится как «декомпилировать» политику. Немного повозившись я смог собрать все зависимости и запустить утилиту sedump. На выходе я получил текстовый файл, который я смог собрать обратно (для KitKat checkpolicy -M -c 26 -o sepolicy.new policy.conf) и даже получить файл с точно таким же размером что и оригинальный sepolicy, но разным hex содержимым. Загрузка новой политики вызвала точно такие же результаты, что и ранее — телефон через какое-то время перезагружался.

Я решил собрать две политики: из policy.conf, который я получил и из policy.conf, в котором добавлены все привилегии для allow init kernel : security, в том числе и setenforce. Сравнить файлы в hex и по аналогии заменить байты в оригинальном sepolicy.

Чуть позже я нашел утилиту sepolicy-inject, которая добавляет привилегии в уже скомпилированный sepolicy файл. Если правило уже существует, то добавление максимальных привилегий не увеличивает конечный размер политики. К сожалению запуск утилиты добавляет всего одно правило за раз. Написал скрипт, который добавляет максимальные привилегии для каждого правила. Результатом был файл с политикой, в которой каждое правило содержало максимальные привилегии. Размер файла совпадал с оригинальным. И это опять не помогло.

Потом я узнал, что в Android есть команда load_policy, которая перезагружает политику по любому пути. Танцы с бубном оказались лишними.

adb shell run-as /data/local/tmp/run -u system -c u:r:init:s0 load_policy /data/local/tmp/sepolicy.new

Можно было добавить любой permissive домен, загрузить новую политику и работать в контексте этого домена (кстати, supersu от chainfire для новых версий Android так и работает). Но даже это не дало возможности отключить SELinux. Я решил копать в другом направлении.

Копаем recovery

image

Запускаю dirtycow exploit, выставляю UID/GID, записываю файл и запускаю adb reboot recovery. Телефон перезагружается и я попадаю в меню стандартного recovery. Уже что-то. Пробую прошить ZIP файл с supersu через adb sideload. Операция прерывается с ошибкой. Толком не смотрю на ошибку, а лезу в код recovery и ищу место, отвечающее за проверку цифровой подписи ZIP файла.

Выясняю, что initramfs содержит публичный ключ res/keys в формате minicrypt, которым проверяется цифровая подпись ZIP файла. Оказалось это стандартный тестовый ключ Android, и что я могу подписать этим ключём любой архив. Проверить это можно следующим образом:

java -jar dumpkey.jar android/bootable/recovery/testdata/testkey.x509.pem > mykey
diff -u mykey res/keys

Попробовал установить ZIP напрямую с sdcard, но в recovery при монтировании sdcard возникала ошибка. Изучил etc/recovery.fstab, оказалось что в режиме recovery sdcard монтируется как vfat:

$ grep mmcblk1 recovery/ramfs/etc/recovery.fstab 
/dev/block/mmcblk1p1                              /sdcard           vfat    nosuid,nodev,barrier=1,data=ordered,nodelalloc                  wait

Моя 64Gb флэшка была отформатирована в exfat. Нашел старую sdcard на 2Gb, отформатировал её как vfat, записал ZIP, вставил её в телефон. Recovery в этот раз смог примонтировать карточку и я мог просматривать её содержимое на телефоне. Однако при установке ZIP опять возникла ошибка: E:failed to set up expected mounts for install; aborting.

Команда strings recovery показала, что этот recovery отличается от стокового, по крайней мере там присутствовали строки, относящиеся к Kyocera, и скорее всего к чистке раздела /data. Покопавшись в оригинальных исходниках я выяснил, что интересующая меня ошибка возникает в функции setup_install_mounts в файле roots.cpp.

Т.е. перед тем как применить ZIP, recovery отмонтирует все разделы, но в моём случае что-то идёт не так.

Копаем исходники ядра

Лицензия GPL обязывает производителей смартфонов выкладывать исходники ядра. Спасибо Линусу и Столлману за это. Иногда производители выкладывают что-то левое, иногда правильные исходники, но без defconfig файла, иногда правильные и очень редко с инструкцией как их собирать (например LG).

В моём случае были исходники с правильным defconfig но без инструкции. Немного попотев я смог собрать ядро и убедился, что это не полная липа.

Через продолжительное время я остановился на двух файлах:

Hooks

Kyocera долго не думала, а просто запилила хуки на потенциально опасные операции в Android: mount, umount, insmod (к загрузке разрешен всего один модуль — wlan и только если его загрузит init процесс), и прочее. Вот где крылась проблема recovery. Он не мог отмонтировать файловую систему /system! Эти операции позволялись только init процессу. В том числе я не мог отключить SELinux потому что эта возможность была отключена при компиляции ядра. Обойти эти хуки можно было только, если ядро загружено с определенными параметрами (kcdroidboot.mode=f-ksg или androidboot.mode=kcfactory, о них чуть позже).

Оцените статью
Master Hi-technology
Добавить комментарий