Je peux obtenir une invite Root dans le terminal en exécutant un exploit documenté ailleurs. (par exemple, ici : http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
A ce stade, je peux installer le binaire "su" et lui donner les permissions 4755. Cela devrait permettre à quiconque de l'exécuter, et puisque le propriétaire du binaire est "Root" et que le sticky bit est activé, je devrais devenir Root. Mais je n'ai apparemment aucun moyen de ne pas devenir Root à partir du terminal sans redémarrer. Mais, après avoir redémarré, je ne peux pas devenir Root en utilisant 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Ok, les permissions semblent correctes, je devrais être capable de l'exécuter pour devenir Root, mais seulement dans cette invocation particulière du terminal.
$ /system/bin/su
Permission denied
Il échoue également si je spécifie la commande à exécuter en tant que Root, ou avec tout autre argument :
$ /system/bin/su /system/bin/sh
Permission denied
Pourquoi ? Y a-t-il un autre mécanisme à l'œuvre ? Je ne veux pas installer Superuser.apk, car je veux juste un moyen d'obtenir temporairement un shell Root si nécessaire, par exemple pour supprimer manuellement des fichiers indésirables. De plus, Superuser.apk s'appuie sur le binaire su de toute façon, il doit donc avoir un moyen de l'appeler, alors pourquoi ne puis-je pas reproduire cela dans le terminal ?
Modifier : J'ai eu une autre idée, alors j'ai essayé de copier /bin/sh à un autre endroit et de le rendre suid Root. Mais alors que je peux exécuter le nouveau binaire, il ne me donne pas Root. Est-ce qu'Android fait quelque chose de délicat/différent avec suid que Linux ordinaire ne fait pas ?
1 votes
Avoir un "su" non protégé sur l'appareil est assez risqué, car tout ce qui tente de l'utiliser l'obtiendra sans aucune confirmation de l'utilisateur que des choses comme l'application superuser essaient d'ajouter comme passerelle.
0 votes
Bon, eh bien... J'essayais d'anticiper. Je n'étais pas sûr de la façon dont une mise à jour ultérieure essaierait de se débarrasser de su, alors je l'ai mis dans un tas d'endroits différents avec des noms différents. Il s'avère que la mise à jour supprime le sticky bit, et je ne peux pas lancer suid à partir d'autres endroits que le système. Ah bon.