213 votes

Comment obtenir un accès Root sur un émulateur Android ?

J'ai toutes les versions du SDK Android (de 1.5 à 2.3.3), et j'ai essayé de nombreuses méthodes pour obtenir la racine dans l'émulateur Android. Je n'utilise aucun appareil Android et je teste tout sur l'émulateur (AVD).

J'ai besoin d'obtenir un accès Root dans l'un des émulateurs Android pour utiliser les fonctionnalités 'iptables' et 'busybox'. Et pour utiliser iptables, je dois avoir un accès Root. La commande 'su' doit au moins s'exécuter dans l'émulateur de terminal.

J'ai également installé z4root l'application,

Mais cela prend beaucoup de temps et ne termine pas l'enracinement, et reste bloqué. Certains disent que si nous rétrogradons le système en dessous de RC30, de cette façon nous pouvons obtenir l'accès à la racine. si c'est vrai, alors comment faire ? J'utilise à la fois Linux et Windows OS.

Quelqu'un peut me dire s'il y a une méthode pour Rooter mon émulateur.

176voto

JRaymond Points 6348

Si vous disposez d'un appareil virtuel avec un accès Root, cela devrait suffire :

$ > adb shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb shell
generic_x86:/ #

Si ce n'est pas le cas, vous pourriez être intéressé par ce qui suit répondre à une autre question, qui explique comment créer un appareil virtuel avec un accès Root, avec les API de Google (aka Services Google Play ), mais sans l'application Google Play.

Si vous avez vraiment besoin de l'application Google Play, vous pourriez être intéressé par d'autres réponses qui expliquent comment déverrouiller un appareil virtuel Android.

101voto

xavier_fakerat Points 675

Comment root l'émulateur Android (testé sur Android 7.1.1/ Nougat)

Exigences :

Instructions

  1. Installer le SuperSu.apk
  • Installez d'abord l'application SuperSu, en faisant simplement un glisser-déposer (si vous utilisez la dernière version de l'émulateur ou un chargement latéral via adb, c.-à-d. adb -e install supersu.apk )

  • Après l'avoir installé, lorsque vous le lancez, il affiche un écran comme ci-dessous indiquant "There is no SU binary installed " (Il n'y a pas de binaire SU installé). Cette erreur confirme simplement que l'appareil n'est pas encore enraciné.

enter image description here


  1. Rendre la partition système de l'émulateur inscriptible
  • Comme il le suggère, nous devons donner à l'émulateur la permission d'écrire des fichiers système.

  • Pour ce faire, tapez le code suivant : emulator -avd {emulator_name} -writable-system

Si vous avez plus d'un AVD, vous pouvez obtenir une liste des AVD en utilisant la commande : emulator -list-avds

Note : Naviguez jusqu'à la page outils dans lequel Android SDK est installé et ouvrez l'invite de commande en appuyant sur shift et en faisant un clic droit.


  1. Pousser le binaire su dans le répertoire système
  • Extraire le fichier Recovery flashable.zip (contenant les binaires su des différentes architectures)

Important ! N'utilisez que le binaire su qui correspond à l'architecture de votre avd, par exemple x86, arm etc , et notez le chemin d'accès où vous avez extrait ces binaires.

  • Assurez-vous que vous exécutez adb en tant que Root et que vous devez remonter. Entrez simplement ces codes

adb root

adb remount

Il est maintenant temps de pousser le binaire su :

Voici le code que j'ai utilisé avec succès : adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su

(sans se soucier de l'emplacement spécifique de su binary, tout emplacement est acceptable tant qu'il n'y a pas d'espace blanc)

note : Pour déterminer bin ou xbin dans la console avant : > adb shell , > ls /system/xbin/su

En cas d'échec, essayez de pousser dans ce répertoire à la place /system/xbin/su . Pour les émulateurs fonctionnant sous Android 5.1 et moins, utilisez l'option su et non su.pie


  1. Modifier les permissions du binaire su
  • Ensuite, nous allons modifier les permissions du binaire su. Nous devons le faire dans l'émulateur à l'aide d'adb :

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

Important ! Prenez note du chemin binaire de su (le mien est /system/bin)


  1. Réglage de la install sur le binaire su et définir un daemon

Tapez les codes :

su --install

et pour la mise en place du démon :

su --daemon&

Important ! Tenir compte de l'espacement


  1. Réglage de SELinux sur Permissive (c'est-à-dire désactivation de SE Linux)
  • Enfin, désactivez selinux à l'aide de ce code :

setenforce 0


Ouvrez l'application SuperSU et elle peut vous demander de mettre à jour les binaires, vous pouvez utiliser la méthode normale.

Note : Si vous rencontrez des boucles de démarrage, ne mettez pas à jour les binaires, utilisez-les tels quels.


C'est à peu près tout !

Ouvrez n'importe quelle application nécessitant des permissions SU juste pour vérifier et SuperSU vous demande si vous souhaitez lui accorder des permissions SU.

enter image description here

Pour que la racine persiste à mettre à jour le binaire su (en utilisant la méthode normale), copiez le fichier system.img depuis le répertoire temporaire ( Users\AppData\Local\Temp\Android Emulator Le fichier est généralement nommé de manière aléatoire, par exemple 1359g.tmp avec une grande taille) et remplacer les system.img .

Mise à jour :

J'ai remarqué qu'il est plus facile d'obtenir une image système temporaire sous Linux que sous Windows. Vous pouvez essayer d'utiliser une image instantanée.

Mise à jour 4 août 2018

Avec l'émergence des émulateurs 27.3.x il facilite désormais la préservation de Root grâce à la fonction d'instantané (si l'on copie le fichier system.img ne fonctionne pas) :

Idéalement, il s'agit plutôt d'une mise en hibernation de l'appareil virtuel avec la configuration intacte, de sorte que tout est préservé.

Instantanés

Vous pouvez désormais enregistrer plusieurs instantanés d'AVD pour un appareil donné. et choisir lequel des snapshots sauvegardés doit être chargé lorsque vous démarrez lorsque vous démarrez l'émulateur. Le démarrage d'un appareil virtuel par le chargement d'un instantané est comme si l'on réveillait un appareil physique en état de veille, par opposition au d'un état de veille, par opposition au démarrage à partir d'un état hors tension.

Cela signifie que la seule condition pour démarrer l'émulateur est d'ajouter l'option -writable-system au paramètre normal emulator -avd [avdname] pour démarrer l'émulateur. ( L'exécution de l'émulateur avec seulement emulator -avd [avdname] ne lance pas la version/copie enracinée ou peut conduire à une erreur )

Testé au niveau API 22

Pour les problèmes liés aux boucles de démarrage, voir l'autre article : Emulateur Android : Comment éviter la boucle de démarrage après l'enracinement ? et ses mises à jour.

Remarques

La plupart des contenus de référence concernaient des versions plus anciennes d'Android, d'où les différentes commandes et chemins d'accès que j'ai modifiés.

Remerciements ;

33voto

a.b.d Points 1206

Voici la liste des commandes à exécuter pendant que l'émulateur fonctionne, je teste cette solution pour un avd sur 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

Il suppose que le binaire su se trouve dans le répertoire de travail. Vous pouvez trouver su et superuser ici : http://forum.xda-developers.com/showthread.php?t=682828 . Vous devez exécuter ces commandes à chaque fois que vous lancez l'émulateur. Vous pouvez écrire un script qui lance l'émulateur et le Root.

20voto

Enyby Points 344

Pour AVD avec 5.1.1 et 6.0, j'ai utilisé le script suivant dans 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

Besoin du fichier UPDATE.zip de SuperSU. Décompressez-les dans n'importe quel dossier. Créer un fichier bat avec le contenu ci-dessus. N'oubliez pas de spécifier l'architecture et l'appareil nécessaires : set adb=adb -s emulator-5558 y set arch=x64 . Si vous utilisez un système Android supérieur ou égal à 5.0, modifiez le paramètre set pie= a set pie=.pie . Exécutez-le. Vous obtenez une racine temporaire pour l'exécution en cours.

Si vous obtenez une erreur lors du remontage de la partition système, vous devez lancer AVD à partir de la ligne de commande. Voir ci-dessous la première étape pour Android 7.

Si vous voulez le rendre persistant, mettez à jour le binaire dans SuperSU et stockez system.img dans un dossier temporaire en remplacement du system.img par défaut.

Comment convertir la racine temporaire qui en résulte en une racine permanente ?

Tout d'abord, le prix va à SuperSu. Il propose une mise à jour binaire. Mettre à jour de manière normale. Le redémarrage est rejeté.

Deuxièmement, il ne concerne que les émulateurs. Le même AVD. L'essentiel est que les modifications apportées à l'image du système ne seront pas sauvegardées. Vous devez les conserver pour elles-mêmes.

Il existe déjà des instructions qui varient selon les émulateurs.

Pour AVD, vous pouvez essayer de trouver un fichier temporaire system.img, le sauvegarder quelque part et l'utiliser lorsque vous démarrez l'émulateur.

Sous Windows, il se trouve dans le répertoire %LOCALAPPDATA%\Temp\AndroidEmulator et porte un nom du type TMP4980.tmp .

Vous le copiez dans un dossier avd device ( %HOMEPATH%\.android\avd\%AVD_NAME%.avd\ ), et renommé en system.img .

Désormais, il sera utilisé au début, au lieu de l'habituel. Vrai si l'image dans le SDK est mise à jour, l'ancienne image sera utilisée.

Dans ce cas, vous devrez supprimer cette system.img et répéter l'opération sur sa création.

Manuel plus détaillé en russe : http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931


Pour Android 7, vous devez exécuter des étapes supplémentaires : 1. Lancer l'émulateur manuellement. Aller dans le dossier sdk sdk\tools\lib64\qt\lib . Exécuter à partir de ce dossier l'émulateur avec les options -writable-system -selinux disabled Comme ceci :

F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
  1. Vous devez redémarrer adbd de la racine :

    adb -s emulator-5554 Root

Et système de remontage :

adb -s emulator-5554 remount

Elle ne peut être effectuée qu'une seule fois par émulateur. Et tout autre remontage peut interrompre le mode d'écriture. Pour cette raison, il n'est pas nécessaire d'exécuter d'autres commandes avec remount, comme par exemple mount -o remount,rw /system .

Les autres étapes restent les mêmes - télécharger le binaire, exécuter le binaire en tant que démon et ainsi de suite.

Image d'AVD Android 7 x86 avec Root : AVD Android 7 x86 with root


Si le message d'erreur PIE s'affiche lors de l'exécution su vous téléchargez alors un mauvais binaire dans l'émulateur. Vous devez télécharger un binaire nommé su.pie à l'intérieur de l'archive, mais sur l'émulateur il doit être nommé comme su , pas su.pie .

13voto

newbie Points 305

Je pense que la méthode la plus simple consiste à créer un alias pour la commande sh , par exemple

adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su

Testé sur l'émulateur Android 3.0 et plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X