Как получить root-доступ к эмулятору Android?
У меня есть все версии Android SDK (от 1.5 до 2.3.3), и я попробовал много способов получить root в Android-эмуляторе. Я не использую Android-устройство и не тестирую все на эмуляторе (AVD).
Мне нужно получить root-доступ в любом из эмуляторов Android для использования функций iptables и busybox. И для использования iptables у меня должен быть root-доступ. Команда Atleast ‘su’ должна выполняться в эмуляторе терминала.
Я также установил приложение z4root
,
- Я считаю, что я удалил пользователя MySQL root, как его воссоздать?
- Запустить скрипт как root через ADB
- Что такое сообщение «У вас есть новое письмо» в Linux / UNIX?
- Как выполнять команды на уровне root в Linux (Fedora) Live Media
- Могу ли я сделать скрипт всегда исполняемым как root?
Но это занимает очень много времени и не заканчивает укоренение и застревает. некоторые говорят, что если мы понизим систему до уровня ниже RC30, таким образом, мы сможем получить доступ root. если это так, то как это сделать? Я использую как Linux, так и ОС Windows.
Пожалуйста, кто-нибудь скажет мне какой-либо метод для запуска моего эмулятора.
- Chown: изменение права собственности не разрешено, хотя выполняется как root
- Судо против корня; Любые фактические различия?
- Как получить APK установленного приложения без доступа root?
- Доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: YES) - Нет привилегий?
- Runtime.exec (): перезагрузка в Android?
- Как запустить «ifconfig wlan0 down / up» с помощью комманда?
- Как я могу получить права root через Android SDK?
- Apt-get update не работает: ошибки подписи / проверки
Эти ответы все излишне сложны 🙂
$ > adb shell generic_x86:/ $ generic_x86:/ $ exit $ > adb root restarting adbd as root $ > adb shell generic_x86:/ #
Как запустить эмулятор андроида (протестирован на Android 7.1.1 / Nougat)
Требования :
-
Приложение SuperSU (chainfire) последней версии 2.82
-
Recovery flashable.zip (содержит su бинарный) (Вот альтернативная ссылка XDA для flashable zip, если основная ссылка не работает: Flashable zip super su pro 2.82 для всех ромов )
инструкции
-
Установите SuperSu.apk
-
Сначала установите приложение SuperSu, просто перетащите его (при запуске последней версии эмулятора или
adb -e install supersu.apk
через adb, т.adb -e install supersu.apk
) -
После его установки при запуске отображается экран, показанный ниже: «Нет установленного двоичного файла …». Эта ошибка просто подтверждает, что устройство еще не внедрено.
-
-
Сделать системный раздел эмулятора
-
Как следует из этого, нам нужно предоставить разрешение эмулятора для записи системных файлов.
-
Введите следующий код, чтобы выполнить следующее:
emulator.exe -avd {emulator_name} -writable-system
-
Примечание. Перейдите в папку инструментов, в которой установлен Android SDK, и откройте командную строку, нажав shift и щелкнув правой кнопкой мыши.
-
Нажатие су бина в системном каталоге
- Извлеките Recovery flashable.zip (содержащий двоичные файлы su разных архитектур)
Важный! Используйте только двоичный файл su, соответствующий вашей avd-архитектуре, например x86, arm и т. Д., И обратите внимание на путь, в котором вы извлекли эти двоичные файлы.
- Убедитесь, что вы используете adb как root, а также вам нужно перемонтировать. Просто введите эти коды
adb root
adb remount
Теперь пришло время нажать су бина:
Это код, который я успешно использовал : adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(неважно, о моем конкретном расположении су бинального, любое место в порядке, так как там не осталось пробелов)
note: Чтобы xbin
что bin
или xbin
делают в консоли до:> adb shell
,> ls /system/xbin/su
Если это не удается, попробуйте это нажатие на этот каталог вместо /system/xbin/su
. Также для эмуляторов, работающих под управлением android 5.1 и ниже, используйте su
а не su.pie
-
Изменить разрешения су бинарного
- Затем давайте немного изменим разрешения su бинарных файлов. Мы должны сделать это в эмуляторе через adb:
adb -e shell su root cd /system/bin chmod 06755 su
Важный!! Обратите внимание на su бинарный путь (my is / system / bin)
- Установка директивы
install
на su binary и установкаdaemon
Введите коды:
su --install
и для установки демона:
su --daemon&
Важный!! Обратите внимание на расстояние
-
Установка SELinux в Permissive (т.е. отключение SE Linux)
- Наконец отключите selinux через этот код:
setenforce 0
-
Откройте приложение SuperSU и попросите обновить двоичные файлы, вы можете использовать метод Normal.
Примечание. Если вы испытываете bootloops, скорее не обновляйте двоичные файлы, просто используйте их как есть.
Это в значительной степени это!
Откройте любое приложение, требующее разрешения SU только для двойной проверки, и действительно, SuperSU спросит, хотите ли вы предоставить ему разрешения su.
Чтобы обновить корневое обновление до двоичного файла (используя метод Normal), затем скопируйте system.img из каталога temp ( Users\AppData\Local\Temp\Android Emulator
файл обычно случайным образом называется, например, 1359g.tmp
с большим размером) и замените default system.img
.
Обновление :
Я заметил, что легче получить временный системный образ в Linux, чем Windows. Вы можете попробовать использовать снимок.
Обновление 4 августа 2018 года
С появлением эмулятора 27.3.x
теперь он значительно упрощает сохранение корня благодаря функции моментального снимка (если копирование метода system.img
не работает):
В идеале это больше похоже на hibernarig виртуального устройства с неповрежденной конфигурацией, поэтому все сохраняется.
моментальные снимки
Теперь вы можете сохранить несколько снимков AVD для данной конфигурации устройства и выбрать, какой из сохраненных снимков загрузить при запуске эмулятора. Запуск виртуального устройства путем загрузки моментального снимка очень похож на пробуждение физического из состояния ожидания, в отличие от загрузки его из состояния отключения.
Это означает, что единственным требованием для запуска эмулятора является добавление параметра -writable-system
в команду normal emulator -avd [avdname]
для запуска эмулятора. ( Запуск эмулятора только с emulator -avd [avdname]
не запускает emulator -avd [avdname]
версию / копию или может привести к некоторой ошибке )
Протестировано на уровне API 22
Также для проблем с bootloop см. Другой пост: Android Emulator: Как избежать цикла загрузки после укоренения? и их обновления.
замечания
Большинство ссылок было посвящено более старым версиям Android и, следовательно, причине для разных команд и путей, которые я модифицировал.
Выражение признательности;
-
Irvin H: Коррекция эмулятора Android -on Android Studio 2.3 ((Android 4.4)
-
Ошибка доступа к корневому файлу Android AVD.
Вот список команд, которые вы должны запускать во время работы эмулятора, я тестирую это решение для avd на Android 2.2:
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system adb push su /system/xbin/su adb shell chmod 06755 /system adb shell chmod 06755 /system/xbin/su
Он предполагает, что су бинар находится в рабочем каталоге. Вы можете найти su и суперпользователя здесь: http://forum.xda-developers.com/showthread.php?t=682828 . Вам нужно запускать эти команды каждый раз при запуске эмулятора. Вы можете написать скрипт, запускающий эмулятор, и root.
Для AVD с 5.1.1 и 6.0 я использовал следующий скрипт в windowsх:
set adb=adb -s emulator-5558 set arch=x64 set pie= adb start-server %adb% root %adb% remount rem %adb% shell mount -o remount,rw /system %adb% shell setenforce 0 %adb% install common/Superuser.apk %adb% push %arch%/su%pie% /system/bin/su %adb% shell chmod 0755 /system/bin/su %adb% push %arch%/su%pie% /system/xbin/su %adb% shell chmod 0755 /system/xbin/su %adb% shell su --install %adb% shell "su --daemon&" rem %adb% shell mount -o remount,ro /system exit /b
Нужен UPDATE.zip из SuperSU. Распакуйте их в любую папку. Создайте файл bat с содержимым выше. Не забудьте указать необходимую архитектуру и устройство: set adb=adb -s emulator-5558
и set arch=x64
. Если вы запустите Android выше или равным 5.0, измените set pie=
чтобы set pie=.pie
. Запустить его. Вы получаете временный root для текущего прогона.
Если у вас возникла ошибка при перезагрузке системного раздела, вам необходимо запустить AVD из командной строки. Ниже приведен первый шаг для Android 7.
Если вы хотите сделать его постоянным – обновите двоичный файл в SuperSU и сохраните system.img из папки temp в качестве замены по умолчанию system.img.
Как преобразовать полученный временный корень в постоянный
Во-первых – он идет в SuperSu. Он предлагает двоичное обновление. Обновите обычным способом. Перезагрузите отклонение.
Второе – релевантно только для эмуляторов. Тот же AVD. Суть в том, что изменения в системном изображении не будут сохранены. Вы должны держать их для себя.
Для разных эмуляторов уже есть инструкции.
Для AVD вы можете попытаться найти временный файл system.img, сохранить его где-нибудь и использовать при запуске эмулятора.
В Windows он находится в %LOCALAPPDATA%\Temp\AndroidEmulator
и имеет имя типа TMP4980.tmp
.
Вы скопируете его в папку avd device ( %HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) и переименовали в system.img
.
Теперь он будет использоваться в начале, а не в обычном режиме. Верно, если изображение в SDK обновлено, оно будет иметь старый.
В этом случае вам нужно будет удалить эту system.img
и повторить операцию при ее создании.
Более подробное руководство на русском языке: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Для android 7 вам нужно выполнить дополнительные действия: 1. Нужно запустить эмулятор вручную. Перейдите в папку sdk\tools\lib64\qt\lib
. Выполнить из этого эмулятора папки с параметрами -writable-system -selinux disabled
Как это:
F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
-
Вам нужно перезапустить
adbd
из root:adb -s эмулятор-5554 root
И система перемонтирования:
adb -s emulator-5554 remount
Он может быть начислен только один раз за один эмулятор запуска. И любая другая перезагрузка может нарушить режим записи. Из-за этого вам не нужно запускать какие-либо другие команды с помощью remount, например mount -o remount,rw /system
.
Другие шаги остаются такими же – загрузите двоичный файл, запустите двоичный файл как демон и так далее.
Изображение с AVD Android 7 x86 с корнем:
Если вы видите ошибку в PIE при выполнении su
binary – тогда вы загружаете в эмулятор неправильно двоичный файл. Вы должны загрузить двоичный файл с именем su.pie
внутри архива, но на эмуляторе его нужно назвать su
, а не su.pie
.
Я считаю, что самый простой способ – создать псевдоним для команды sh
, например
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system cd /system/bin cat sh > su && chmod 4775 su
Протестировано на Android Emulator 3.0 и выше.
Здесь мой пакет со всем, что вам нужно. Или вы можете использовать этот скрипт:
echo on set device=emulator-5554 set avd_name= set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device% set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator set arch=x86 set pie= echo Close all ANDROID emulators and press any key pause start %emulator% -avd Nexus_One_API_25 -verbose -writable-system echo Wait until ANDROID emulator loading and press any key pause %adb% start-server %adb% root %adb% remount %adb% shell setenforce 0 %adb% install D:\SuperSU\SuperSU.apk %adb% push D:\SuperSU\su\%arch%\su.pie /system/bin/su %adb% shell chmod 0755 /system/bin/su %adb% push D:\SuperSU\su\%arch%\su.pie /system/xbin/su %adb% shell chmod 0755 /system/xbin/su %adb% shell su --install %adb% shell "su --daemon&" pause exit /b
Я использовал часть метода из приведенных выше решений; однако они не работали полностью. В последней версии Энди это сработало для меня:
На Энди (Корневая shell) [Чтобы получить, щелкните правой кнопкой мыши значок HandyAndy и выберите «Срочная shell»)
Внутри оболочки запустите следующие команды:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system cd /system/bin cat sh > su && chmod 4775 su
Затем установите SuperSU и установите SU-файл. Это заменит только что созданный SU-файл. (Необязательно) Удалите SuperSU и установите Superuser на CWM. Установите su бинарный снова. Теперь корень работает!
Я пробовал многие из вышеперечисленных предложений, в том числе SuperSU, и не мог заставить их работать, но нашел нечто гораздо более простое, что сработало для моих целей. В моем случае я просто хотел запустить SQLite в командной строке. Я просто создал эмулятор с более старой версией Android (Lollipop) и получил доступ к root сразу.
Попробуйте другой способ решить этот вопрос.
Используйте Genymotion вместо Android-эмулятора по умолчанию. Он по умолчанию установлен. Это намного проще и больше похоже на обычный телефон. Это бесплатно для личного использования.
Я нашел этот вопрос, потому что хочу установить Xposed framework в Android-эмулятор по умолчанию. Для этой установки требуется root и flash с пользовательским восстановлением (например, TWRP), оба для Android-эмулятора по умолчанию сложны. Наконец я использовал Genymotion, и все было сделано за несколько минут.