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

11

¿Hay alguna forma en que otorgue 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.

AnDroDroo
fuente

Respuestas:

13

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 se declaran 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 para una aplicación usarlo. Las aplicaciones que tienen derechos de root 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, tiene que solicitar el subinario para hacerlo. suluego le preguntará a la aplicación que administra estos permisos (por ejemplo, SuperSU) si se le permite a la aplicación obtener acceso a la raíz. Si no es así, le pedirá que lo permita o lo niegue. 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 en teoría es posible agregar esto a una aplicación, este sería un proceso no trivial que requiere el conocimiento de escribir 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 smali. 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 raíz privilegiado separado de su acceso normal. Entonces, en realidad, esto no es realmente factible.

RR
fuente
1
Para aquellos que no saben qué es smali: es el dialecto de ensamblaje para el código de máquina virtual dalvik de Android y se usa a menudo en archivos de ingeniería inversa. Lo que podría ser un poco confuso: la aplicación debe encargarse de convertirse en root programáticamente. Es por eso que el desarrollador tiene que incluirlo. Agregarlo a SuperSU no ayuda mientras la aplicación no ejerza sus derechos de root.
ce4
Entonces, ¿no puedo abrir algún 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?
AnDroDroo
1
Absolutamente correcto. Para dar un ejemplo: si la aplicación no se iniciará con root e intenta abrir algún "archivo raíz", simplemente obtendría un "permiso denegado", ya que el acceso al archivo aún se realizará con el UID de la aplicación (se será 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.
Izzy
Es por eso que no pude usar otros editores de texto para leer archivos raíz :).
AnDroDroo
1
@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
1

He encontrado una manera que puede ayudarte. Usé esto para otorgar acceso de raíz 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.

Graeme Evans
fuente
Todos los directorios /location/of/folder/desde la raíz hasta la parte superior deben ser legibles / transitables. También SELinux puede negar el acceso. Entonces este enfoque rara vez es práctico.
Irfan Latif