Differences
This shows you the differences between two versions of the page.
Previous revision | |||
— | android:rooting_any_device_with_ubuntu [2019/02/11 09:13] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
+ | |||
+ | |||
+ | ====== СТАТЬЯ ЕЩЕ СЫРАЯ ====== | ||
+ | Приемы, | ||
+ | Я собирал его так: [[android: | ||
+ | \\ | ||
+ | |||
+ | В данной статье я пытаюсь получить **root** для телефона **Nomu S30 mini**, на базе **MTK6735**. | ||
+ | |||
+ | https:// | ||
+ | http:// | ||
+ | http:// | ||
+ | ====== Разблокировка бутлоадера ====== | ||
+ | Для того, чтобы в телефон можно было заливать модифицированные образы нужно разблокировать бутлоадер. | ||
+ | **ВНИМАНИЕ!!** при разблокировке или блокировке бутлоадера пользовательские данные теряются!!!! \\ | ||
+ | Устанавливаем **adb-tools** | ||
+ | sudo apt-get install android-tools-adb android-tools-fastboot | ||
+ | |||
+ | Включаем в **Developer Options** опцию **USB Debugging**. \\ | ||
+ | В **Developer Options** включаем **OEM Unlocking**. \\ | ||
+ | Включаем телефон и подключаем к компу. Телефон спросит - можно ли использовать с этим компьютером **USB Debug** - отвечаем **Yes**. \\ | ||
+ | \\ | ||
+ | Теперь перезагружаем телефон в режим бутлоадера. Для этого | ||
+ | adb reboot-bootloader | ||
+ | Либо выключаем телефон, | ||
+ | После того, как на телефоне появится надпись **FASTBOOT MODE** на компе выполняем: | ||
+ | fastboot oem unlock | ||
+ | В результате компьютер скажет: | ||
+ | (bootloader) Start unlock flow | ||
+ | | ||
+ | OKAY | ||
+ | То есть теперь бутлоадер разлочен и мы можем прошивать новые прошивки через него. | ||
+ | |||
+ | ====== Прошивка с помощью bootloader ====== | ||
+ | Перезагружаем телефон в режим бутлоадера (fastboot): | ||
+ | adb reboot-bootloader | ||
+ | Например, | ||
+ | fastboot flash system system.img | ||
+ | Эта команда прошьет блок с названием **system** файлом-образом **system.img** из текущего каталога. Аналогично прошиваются recovery и boot: | ||
+ | fastboot flash boot boot.img | ||
+ | fastboot flash recovery recovery.img | ||
+ | Перезагружаем телефон: | ||
+ | fastboot reboot | ||
+ | Или перезагружаем его в **recovery** | ||
+ | fastboot reboot recovery | ||
+ | | ||
+ | ====== Отключение dm-verity и включение userdebug ====== | ||
+ | Для того, чтобы можно было загружать модицицированный **system.img**, | ||
+ | Распаковываем **boot.img** с помощью [[https:// | ||
+ | ./ | ||
+ | Из распакованного **ramdisk** удаляем файл **verity_key** | ||
+ | sudo rm ./ | ||
+ | В файле **./ | ||
+ | sudo sed -i '/ | ||
+ | В файле **./ | ||
+ | sudo sed -i '/ | ||
+ | sudo sed -i '/ | ||
+ | echo ' | ||
+ | Упаковываем обратно: | ||
+ | sudo ./ | ||
+ | И прошиваем в телефон: | ||
+ | adb reboot-bootloader | ||
+ | fastboot flash boot ./ | ||
+ | fastboot reboot | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | ======== Всё, что написано ниже, неактуально, | ||
+ | |||
+ | |||
+ | ====== Перепаковка boot.img ====== | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | ===== Распаковка ===== | ||
+ | wget https:// | ||
+ | tar -xvf ./ | ||
+ | mkdir ./boot | ||
+ | ./ | ||
+ | В результате в папке ./boot будут файлики. И среди них два: | ||
+ | * boot.img-zImage | ||
+ | * boot.img-ramdisk.gz ----> ramdisk | ||
+ | Чтобы распаковать ram-диск делаем так: | ||
+ | gunzip -c boot.img-ramdisk.gz | cpio -i | ||
+ | ==== Упаковка initramfs ==== | ||
+ | cd | ||
+ | find . | cpio -o -H newc | gzip > ../ | ||
+ | | ||
+ | ==== Отключение verify для раздела system ==== | ||
+ | ./ | ||
+ | cd boot | ||
+ | mkdir ./ramdisk | ||
+ | cp ./ | ||
+ | cd ramdisk/ | ||
+ | gunzip -c boot.img-ramdisk.gz | cpio -i | ||
+ | rm -f ./ | ||
+ | sed -i '/ | ||
+ | rm -f ../ | ||
+ | find . | cpio -o -H newc | gzip > ../ | ||
+ | | ||
+ | ==== Получение root в adb ==== | ||
+ | В файлике **default.prop** нужно сделать так: | ||
+ | ro.secure=0 | ||
+ | ro.debuggable=1 | ||
+ | persist.service.adb.enable=1 | ||
+ | |||
+ | ==== Упаковка ==== | ||
+ | Выполняется как-то так: | ||
+ | ./mkbootimg --kernel ./ | ||
+ | | ||
+ | ====== Перепаковка boot.img с помощью abootimg ====== | ||
+ | **boot.img** перепакованый таким образом нормально загружается, | ||
+ | sudo apt-get install abootimg | ||
+ | abootimg -x ./boot.img | ||
+ | abootimg-unpack-initrd | ||
+ | Команда | ||
+ | rm ./ | ||
+ | abootimg-pack-initrd | ||
+ | Команда **abootimg-pack-initrd** упакует содержимое папки **ramdisk** в файл **./ | ||
+ | Теперь можно всё собрать обратно в **newboot.img**. | ||
+ | abootimg --create newboot.img -f ./ | ||
+ | \\ | ||
+ | ====== Перепаковка с подписью сертификатом ====== | ||
+ | В сертификате указывал такие данные: | ||
+ | Подписанный (но не измененный) **boot.img** НЕ загружается. | ||
+ | < | ||
+ | abootimg -x ./ | ||
+ | abootimg-unpack-initrd | ||
+ | #sed -i '/ | ||
+ | rm ./ | ||
+ | abootimg-pack-initrd | ||
+ | abootimg --create newboot.img -f ./ | ||
+ | openssl genrsa -f4 -out verifiedboot.pem 2048 | ||
+ | openssl pkcs8 -in verifiedboot.pem -topk8 -outform DER -out verifiedboot.pk8 -nocrypt | ||
+ | openssl req -new -x509 -sha256 -key verifiedboot.pem -out verifiedboot.x509.pem | ||
+ | openssl x509 -outform DER -in verifiedboot.x509.pem -out verifiedboot.x509.der | ||
+ | java -jar BootSignature.jar /boot newboot.img verifiedboot.pk8 verifiedboot.x509.der boot_signed.img | ||
+ | java -jar BootSignature.jar -verify boot_signed.img | ||
+ | |||
+ | |||
+ | adb reboot-bootloader | ||
+ | fastboot flash boot ./ | ||
+ | fastboot reboot | ||
+ | </ | ||
+ | ====== Перепаковка system.img ====== | ||
+ | Скачиваем отсюда **super-su**: | ||
+ | |||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | При внедрении в образ **system.img** файлов **SuperSU** нужно прописать их в **SELinux**. База данных **SELinux** хранится в образе **boot.img**, | ||
+ | Образ **system.img** нужно распаковать с помощью {{ : | ||
+ | \\ | ||
+ | \\ | ||
+ | Итак.\\ | ||
+ | В отдельную папку (меня это пака **~/ | ||
+ | ./ | ||
+ | Из папки **./ | ||
+ | cp ./ | ||
+ | Теперь с помощью скрипта перепаковываем system.img и вносим изменения в **file_contexts.bin**: | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | SuperSU_PATH="/ | ||
+ | cd ~/ | ||
+ | ./simg2img ./ | ||
+ | sudo mkdir /system | ||
+ | sudo mount -t ext4 -o loop ./ | ||
+ | mkdir boot | ||
+ | cp ./boot.img ./boot/ | ||
+ | cp ./ | ||
+ | cd ./boot | ||
+ | ./ | ||
+ | gunzip -c boot.img-ramdisk.gz | cpio -i | ||
+ | cd .. | ||
+ | ./ | ||
+ | |||
+ | |||
+ | sudo mkdir --parents / | ||
+ | sudo chmod 0644 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp $SuperSU_PATH/ | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp $SuperSU_PATH/ | ||
+ | sudo chmod 0755 / | ||
+ | sed -i '/ | ||
+ | echo "/ | ||
+ | |||
+ | sudo mkdir / | ||
+ | sudo cp $SuperSU_PATH/ | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp $SuperSU_PATH/ | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp $SuperSU_PATH/ | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo touch / | ||
+ | sudo chmod 0644 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp / | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo cp / | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo mv / | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo mv / | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo mv / | ||
+ | sudo chmod 0755 / | ||
+ | echo "/ | ||
+ | |||
+ | sudo ln -s / | ||
+ | sudo ln -s / | ||
+ | sudo ln -s / | ||
+ | sudo rm -f / | ||
+ | sudo ln -s / | ||
+ | |||
+ | SYSTEM_RAW_SIZE=$(stat --printf=" | ||
+ | sudo ./ | ||
+ | sudo umount /system | ||
+ | sudo chmod a+rw ./ | ||
+ | sudo rm -f ./ | ||
+ | sudo rm -Rf ./boot | ||
+ | sudo rm -f ./ | ||
+ | sudo rm -Rf /system | ||
+ | </ | ||
+ | |||
+ | Переносим новый **file_contexts.bin** в рамдиск **boot.img** и упаковывавем **boot.img**. | ||
+ | echo '' | ||
+ | sudo dd if=./ | ||
+ | |||
+ | ====== UNBRICK ====== | ||
+ | http:// | ||
+ | https:// | ||
+ | |||