Как получить root-доступ к эмулятору Android?

У меня есть все версии Android SDK (от 1.5 до 2.3.3), и я попробовал много способов получить root в Android-эмуляторе. Я не использую Android-устройство и не тестирую все на эмуляторе (AVD).

Мне нужно получить root-доступ в любом из эмуляторов Android для использования функций iptables и busybox. И для использования iptables у меня должен быть root-доступ. Команда Atleast ‘su’ должна выполняться в эмуляторе терминала.

Я также установил приложение z4root ,

Но это занимает очень много времени и не заканчивает укоренение и застревает. некоторые говорят, что если мы понизим систему до уровня ниже RC30, таким образом, мы сможем получить доступ root. если это так, то как это сделать? Я использую как Linux, так и ОС Windows.

Пожалуйста, кто-нибудь скажет мне какой-либо метод для запуска моего эмулятора.

Эти ответы все излишне сложны 🙂

 $ > 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 для всех ромов )

инструкции

  1. Установите SuperSu.apk

    • Сначала установите приложение SuperSu, просто перетащите его (при запуске последней версии эмулятора или adb -e install supersu.apk через adb, т. adb -e install supersu.apk )

    • После его установки при запуске отображается экран, показанный ниже: «Нет установленного двоичного файла …». Эта ошибка просто подтверждает, что устройство еще не внедрено.

введите описание изображения здесь


  1. Сделать системный раздел эмулятора

    • Как следует из этого, нам нужно предоставить разрешение эмулятора для записи системных файлов.

    • Введите следующий код, чтобы выполнить следующее: emulator.exe -avd {emulator_name} -writable-system

Примечание. Перейдите в папку инструментов, в которой установлен Android SDK, и откройте командную строку, нажав shift и щелкнув правой кнопкой мыши.


  1. Нажатие су бина в системном каталоге

    • Извлеките 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


  1. Изменить разрешения су бинарного

    • Затем давайте немного изменим разрешения su бинарных файлов. Мы должны сделать это в эмуляторе через adb:

    adb -e shell su root cd /system/bin chmod 06755 su

Важный!! Обратите внимание на su бинарный путь (my is / system / bin)


  1. Установка директивы install на su binary и установка daemon

Введите коды:

su --install

и для установки демона:

su --daemon&

Важный!! Обратите внимание на расстояние


  1. Установка SELinux в Permissive (т.е. отключение SE Linux)

    • Наконец отключите selinux через этот код:

setenforce 0


  1. Откройте приложение 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 
  1. Вам нужно перезапустить adbd из root:

    adb -s эмулятор-5554 root

И система перемонтирования:

 adb -s emulator-5554 remount 

Он может быть начислен только один раз за один эмулятор запуска. И любая другая перезагрузка может нарушить режим записи. Из-за этого вам не нужно запускать какие-либо другие команды с помощью remount, например mount -o remount,rw /system .

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

Изображение с AVD Android 7 x86 с корнем: 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, и все было сделано за несколько минут.

  • phpMyAdmin - не удается подключиться - недействительные настройки - с тех пор, как я добавил пароль с правами root
  • Чтение вывода команды внутри процесса su
  • Как программно получить привилегии root?
  • Как заставить MySQL дать право пользователю root?
  • Как я могу стать корнем в Йосемити?
  • Пароль mysql root забыт
  • Как переименовать корневой ключ в JSON-сериализации с помощью Jackson
  • У учетной записи root всегда есть UID / GID 0?
  • Как запустить команду запуска с правами root
  • Как я могу передать Root Password в скрипт
  • Установка postgres без apt-get
  • Давайте будем гением компьютера.