¿Cómo agregar permiso de root a alguna aplicación por mí mismo?

¿Hay alguna forma de otorgar intencionalmente permiso de root a alguna aplicación? No automáticamente a través de SuperSU cuando una aplicación específica solicita permiso de root, sino de una manera de elegir una aplicación a través de alguna herramienta y otorgarle permisos de root.

Por ejemplo, agrego mi aplicación de texto favorita a la lista aprobada y luego puedo abrir archivos raíz a través de esa aplicación.

Respuestas (2)

No. Debe solicitar al desarrollador de la aplicación que lo haga.

En sistemas similares a UNIX, los permisos se administran con algo llamado UID.

Cada proceso tiene uno y dicta a qué pueden acceder. Además, también hay grupos que tienen permiso que sus miembros pueden usar. Cuando una aplicación tiene permisos, como Write to SD cardsi estuvieran en un grupo que tiene este permiso.

Los permisos de root son una excepción ya que no están declarados en el manifiesto de la aplicación, sino en su código. Root tampoco es un grupo, sino un UID separado (ya que es un usuario separado), por lo que no es tan fácil de usar para una aplicación. Las aplicaciones que tienen derechos de raíz deben escribirse explícitamente para hacerlo.

La forma en que esto funciona es que cada vez que una aplicación quiere hacer algo como root, debe solicitar el subinario para hacerlo. suluego le preguntará a la aplicación que administra estos permisos (por ejemplo, SuperSU) si la aplicación puede obtener acceso de root. Si no es así, le pedirá que lo permita o lo deniegue. Luego, la acción se lleva a cabo como root, no como el usuario de la aplicación. Estas acciones no son una parte integral de la aplicación, sino un ejecutable externo.

Si bien teóricamente es posible agregar esto a una aplicación, este sería un proceso no trivial que requiere conocimiento de escritura de código pequeño, que es el formato interno de la máquina virtual Dalvik (la parte del sistema que ejecuta el archivo apk) llamado pequeño E incluso entonces, habría un gran riesgo de seguridad si la aplicación permite que otras aplicaciones accedan a ella: no sabría cómo mantener el acceso de raíz privilegiado separado de su acceso normal. Entonces, en realidad, esto no es realmente factible.

Para aquellos que no saben qué es smali: es el dialecto ensamblador para el código de máquina virtual dalvik de Android y se usa a menudo en archivos dex de ingeniería inversa. Lo que podría ser un poco confuso: la aplicación debe encargarse de convertirse en root mediante programación. Es por eso que el desarrollador tiene que incluirlo. Agregarlo a SuperSU no ayuda siempre que la aplicación no ejerza sus derechos de root.
Entonces, ¿no puedo abrir un archivo de texto raíz a través de mi editor de texto favorito si los programadores no codificaron la aplicación para aceptar la apertura de archivos raíz?
Absolutamente correcto. Para dar un ejemplo: si la aplicación no se inicia con la raíz e intenta abrir algún "archivo raíz", simplemente obtendrá un "permiso denegado", ya que el acceso al archivo aún se realizará con el UID de la aplicación (no no pedirá permisos de superusuario para abrirlo). Por otro lado, si la aplicación se inicia utilizando el UID raíz (es decir su <app>, ), accederá a ese archivo raíz como raíz y, por lo tanto, obtendrá permiso.
Es por eso que no pude usar otros editores de texto para leer archivos raíz :).
@Izzy AFAIK no puede ejecutar una aplicación de Android normal con UID raíz, o cambiar el UID de una aplicación en ejecución. Lo único que puede hacer es ejecutar programas de línea de comandos con su y, por lo tanto, ejecutar comandos con permisos de administrador.
@Robert, mi descripción estaba usando intencionalmente palabras simples para que se entendiera fácilmente. Claro que no es 100% preciso, pero explica crudamente el "por qué no puedo..." del interrogador. Explicar todo el principio no cabría en un simple comentario :)
Gracias chicos, actualicé mi respuesta. Puedo ver que este no es el tema más fácil de digerir.
Asumiré que no es posible configurar el bit setuid. Android no se parece tanto a Linux. :)
@Broam bueno, no tengo un binario setuid en mi teléfono, así que supongo. Pero Android solo usa el kernel de Linux, no es Linux y estoy bastante seguro de que no es compatible con POSIX.

He encontrado una manera que puede ayudarte. Usé esto para otorgar acceso de root a Tasker .

Si usa el emulador de terminal para otorgar acceso de lectura pero no de escritura a una carpeta usando

  • su
  • chmod 775 /location/of/folder/

entonces su editor de texto podrá leer ese directorio y, por lo tanto, si puede intentar guardar un archivo en la carpeta, intentará solicitar permiso de root.

También puede dar un error de escritura.

Todos los directorios /location/of/folder/desde la raíz hasta la parte superior deben ser legibles/transitables. También SELinux puede denegar el acceso. Así que este enfoque rara vez es práctico.