Comment ajouter moi-même l'autorisation root à une application?
11
Existe-t-il un moyen d'accorder intentionnellement l'autorisation root à une application? Pas automatiquement via SuperSU lorsqu'une application spécifique demande l'autorisation root, mais de manière à choisir une application via un outil et à lui accorder des autorisations root.
Par exemple, j'ajoute mon application de texte préférée à la liste approuvée, puis je peux ouvrir des fichiers racine via cette application.
Non. Vous devez demander au développeur de l'application de le faire.
Sur les systèmes UNIX, les autorisations sont gérées avec quelque chose appelé UID.
Chaque processus en a un et il dicte à quoi ils peuvent accéder. De plus, il existe également des groupes qui ont l'autorisation que leurs membres peuvent utiliser. Lorsqu'une application dispose d'autorisations telles Write to SD cardqu'elles sont placées dans un groupe disposant de cette autorisation.
Les autorisations root sont une exception car elles ne sont pas déclarées dans le manifeste de l'application, mais plutôt dans son code. Root n'est pas non plus un groupe mais un UID distinct (car il s'agit d'un utilisateur distinct), il n'est donc pas si facile pour une application de l'utiliser.
Les applications disposant de droits root doivent être explicitement écrites pour ce faire.
La façon dont cela fonctionne est chaque fois qu'une application veut faire quelque chose en tant que root, elle doit demander au subinaire de le faire à la place. sudemandera ensuite à l'application qui gère ces autorisations (par exemple, SuperSU) si l'application est autorisée à accéder à la racine. Si ce n'est pas le cas, il vous demandera de l'autoriser ou de le refuser. Ensuite, l'action est exécutée en tant que root, et non en tant qu'utilisateur de l'application. Ces actions ne font pas partie intégrante de l'application mais plutôt d'un exécutable externe.
Bien qu'il soit théoriquement possible d'ajouter ceci à une application, ce serait un processus non trivial nécessitant la connaissance de l'écriture de code smali, qui est le format interne de la machine virtuelle Dalvik (la partie du système qui exécute le fichier apk) appelée smali. Et même alors, il y aurait un énorme risque pour la sécurité si l'application autorise d'autres applications à y accéder: elle ne saurait pas comment garder l'accès root privilégié séparé de son accès normal. Donc, en réalité, ce n'est pas vraiment faisable.
Pour ceux qui ne savent pas ce qu'est smali: c'est le dialecte d' assemblage pour le code de machine virtuelle dalvik d'Android et souvent utilisé dans les fichiers dex de rétro-ingénierie. Ce qui pourrait ne pas être clair: l'application doit se charger de devenir root par programme. C'est pourquoi le développeur doit l'inclure. L'ajouter à SuperSU n'aide pas tant que l'application n'exerce pas ses droits root.
ce4
Je ne peux donc pas ouvrir un fichier texte racine via mon éditeur de texte préféré si les programmeurs n'ont pas codé l'application pour accepter l'ouverture des fichiers racine?
AnDroDroo
1
Absolument correct. Pour donner un exemple: si l'application ne démarre pas avec root et essaie d'ouvrir un "fichier racine", elle obtiendrait simplement une "autorisation refusée" - car l'accès au fichier se fera toujours avec l'UID de l'application (il ne pas demander des autorisations de super - utilisateur pour l' ouvrir). D'un autre côté, si l'application est démarrée à l'aide de l'UID racine (c'est-à-dire su <app>), elle accédera à ce fichier racine en tant que root, et obtiendra ainsi l'autorisation.
Izzy
C'est pourquoi je n'ai pas pu utiliser d'autres éditeurs de texte pour lire les fichiers racine :).
AnDroDroo
1
@Izzy AFAIK, vous ne pouvez pas exécuter une application Android standard avec l'UID racine, ou modifier l'UID d'une application en cours d'exécution. La seule chose que vous pouvez faire est d'exécuter des programmes de ligne de commande avec su et donc d'exécuter des commandes avec des autorisations d'administrateur.
Robert
1
J'ai trouvé un moyen qui pourrait vous aider. J'ai utilisé cela pour accorder un accès root à Tasker .
Si vous utilisez l'émulateur de terminal pour accorder un accès en lecture mais pas en écriture à un dossier à l'aide
su
chmod 775 /location/of/folder/
alors votre éditeur de texte pourra lire ce répertoire et donc si vous pouvez ensuite essayer d'enregistrer un fichier dans le dossier, il essaiera de demander l'autorisation root.
Il peut également simplement donner une erreur d'écriture.
Tous les répertoires /location/of/folder/de la racine au sommet doivent être lisibles / traversables. SELinux peut également refuser l'accès. Cette approche est donc rarement pratique.
su <app>
), elle accédera à ce fichier racine en tant que root, et obtiendra ainsi l'autorisation.J'ai trouvé un moyen qui pourrait vous aider. J'ai utilisé cela pour accorder un accès root à Tasker .
Si vous utilisez l'émulateur de terminal pour accorder un accès en lecture mais pas en écriture à un dossier à l'aide
su
chmod 775 /location/of/folder/
alors votre éditeur de texte pourra lire ce répertoire et donc si vous pouvez ensuite essayer d'enregistrer un fichier dans le dossier, il essaiera de demander l'autorisation root.
Il peut également simplement donner une erreur d'écriture.
la source
/location/of/folder/
de la racine au sommet doivent être lisibles / traversables. SELinux peut également refuser l'accès. Cette approche est donc rarement pratique.