Подозреваю, что есть больше одного способа получить root права на этом устройстве. В сети есть даже туториалы разной степени работоспособности. Часть из них требует каких-то сумрачных виндовых программ (в т.ч. платных), другая часть просто не работает или демонстрирует полное непонимание вопроса автором туториала. Поковырявшись с этим всем великолепием, я решил написать тот самый, правильный туториал©, который хотел бы прочитать сам в начале пути.
Любое количество кирпичей, образовавшихся в результате описываемых ниже действий - на вашей совести.
Я привык к хорошему, и поэтому процесс получения root прав для меня обычно должен выглядеть так: разблокировать загрузчик, прошить патченный magisk-ом boot.img
и работать дальше. Это хорошо работает на референсных устройствах от Google. Но реальность Android мира такова, что обычно получение root-а это какая-то боль, унижение, мутные форумы, странные программы и кирпич на выходе. Конечно же все это ждет вас ниже, но я попробую сделать процесс более простым.
Предусловия:
- Вы понимаете, что такое режим разработчика и Magisk. В идеале - имеете опыт установки Magisk на другие устройства.
- Знаете где находится консоль
- На хосте установлен python3 и adb
- Установлены все необходимые драйвера для работы с USB
Подготовка
Начало стандартное:
- Включаем режим разработчика:
Settings -> About phone -> Version -> покликать по Build number до победного
- Включаем отладку по USB и OEM unlock:
Settings -> Additional settings -> Developer options -> OEM unlock и USB debugging
Девайс сделан на процессоре MediaTek Helio G35
, поэтому берем mtkclient, который и сделает всю нужную магию.
Just some mtk tool for exploitation, reading/writing flash and doing crazy stuff. For windows, you need to install the stock mtk port and the usbdk driver (see instructions below). For linux, a patched kernel is only needed when using old kamakiri (see Setup folder) (except for read/write flash).
У меня все завелось без установки дополнительных зависимостей вроде libusb
, но если у вас не так, то в README репозитория есть все нужные инструкции.
$ git clone https://github.com/bkerler/mtkclient
$ cd mtkclient
$ pip3 install -r requirements.txt
Превращаем смартфон в кирпич
У этой модели есть странный глюк - настройка USB debugging отключается после каждой перезагрузки и нужно не забывать ее включать
Для выполнения дальнейших действий, нужно полностью отключить смартфон и отсоединить кабель. Теперь можно дампить boot
и vbmeta
разделы. Запускаем команду для дампа:
$ python mtk r boot,vbmeta boot.img,vbmeta.img
И ждем пока появится приглашение к дальнейшим активным действиям:
Port - Hint:
Power off the phone before connecting.
For brom mode, press and hold vol up, vol dwn, or all hw buttons and connect usb.
For preloader mode, don't press any hw button and connect usb.
......
Без паники, mtkclient будет периодически писать эти сообщения в консоль и ждать подключения устройства. Чтобы подключить его правильно нужно одновременно нажать и удерживать обе кнопки громкости и подключить кабель. Кнопки нужно держать до тех пор пока не начнется процесс дампа. Ожидание может занять 10-15 секунд.
Теперь выполняем сброс чтобы вернуть смартфон в адекватное состояние:
$ python mtk reset
Отключаем кабель и включаем смартфон в обычном режиме. Стоит запомнить этот пируэт с удержанием двух кнопок, его нужно будет выполнять каждый раз чтобы потыкать mtkclient-ом в смартфон. Пока ждем загрузки, нужно скачать самую новую версию Magisk. На момент выхода этой статьи была актуальна версия 25.1.
$ wget https://github.com/topjohnwu/Magisk/releases/download/v25.1/Magisk-v25.1.apk
Пока скачивался Magisk, смартфон должен был загрузится. Устанавливаем приложение Magisk и закидываем в смартфон boot.img
, который мы сдампили ранее. Он лежит в папке mtkclient-а.
$ adb install Magisk-v25.1.apk
$ adb push boot.img /sdcard/Download
В свежеустановленном Magisk-е выбираем Install. Опцию Patch vbmeta in boot image
при этом выбирать не нужно. Патчим boot.img
и сразу стягиваем с утройства запатченную версию:
$ adb pull /sdcard/Download/magisk_patched-25100_ZZuQH.img .
Опять выдергиваем шнур и выдавливаем стекло отключаем смартфон. Теперь нужно отформатировать разделы:
$ python mtk e metadata,userdata,md_udc
После запуска команды повторяем пируэт с удержанием кнопок и ждем окончания процесса очистки. Теперь все готово для разблокировки загрузчика. Смартфон не трогаем, просто выполняем следующую команду:
$ python mtk da seccfg unlock
Если все прошло успешно, то картина будет такая:
Выполняем сброс, отключаем кабель и включаем смартфон как обычно.
$ python mtk reset
При включении он скажет, что все безнадежно испорчено и выключится через 5 секунд. Чтобы этого не произошло, нужно успеть нажать кнопку включения питания после появления сообщения про ошибку dm-verity
. После этого появится следующее предупреждение, что все плохо и телефоном пользоваться нельзя. Но на этот раз ничего нажимать не нужно. Он начнет загрузку через 5 секунд. Загружаться будет долго. Очень долго. Можно смело идти пить чай или даже сходить в бассейн.
После успешной (но это неточно) загрузки - включаем режим разработчика и убеждаемся, что опция разблокировки загрузчика нам больше недоступна, а загрузчик разблокирован
Теперь с помощью adb перезагружаемся в fastboot. Не забываем, что на самом старте нас ждет ошибка про испорченный dm-verity
которую как и раньше нужно успеть прибить за 5 секунд.
$ adb reboot fastboot
Когда попали в fastboot, на всякий случай убеждаемся, что устройство доступно в этом режиме
$ fastboot devices
Прошиваем запатченный ранее boot
$ fastboot flash boot magisk_patched-25100_ZZuQH.img
И патчим vbmeta
, попутно отключая надоедливое сообщение про dm-verity
$ fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
Перезагружаемся, и не забываем включить отладку по USB. Скорее всего вы поймаете глюк, когда установленное ранее приложение Magisk будет отображаться со стандартной android-иконкой и просить интернет для обновления. Решить эту проблему можно обновив это приложение из того же apk, который вы скачали ранее:
$ adb install -r Magisk-v25.1.apk
После обновления открываем приложение Magisk, которое, скорее всего, попросит что-то там внутри себя настроить и перезагрузиться. Со всем соглашаемся и после перезагрузки видим, что все раскатилось отлично:
Проверяем root-овый шелл и идем пить авиационный керосин. Ну или покупать новое устройство ;)