12 votos

¿Cómo puedo añadir el permiso de Root a una aplicación por mí mismo?

¿Hay alguna manera de que yo intencionalmente le conceda permiso a Root para alguna aplicación? No automáticamente a través de SuperSU cuando una aplicación específica pide permiso de root, sino de alguna manera para elegir una aplicación a través de alguna herramienta y concederle permisos de root.

Por ejemplo, añado mi aplicación de texto favorita a la lista de aprobados y luego puedo abrir los archivos de Root a través de esa aplicación.

14voto

Richard Borcsik Puntos 4836

No. Deberías pedirle al desarrollador de la aplicación que lo haga.

En sistemas como UNIX, los permisos se gestionan con algo llamado UID.

Cada proceso tiene uno y dicta a qué pueden acceder. Además, también hay grupos que tienen permiso para que sus miembros puedan utilizarlo. Cuando una aplicación tiene permisos como Write to SD card se les pone 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. Además, Root no es un grupo sino un UID independiente (ya que es un usuario independiente), por lo que no es tan fácil que una aplicación lo utilice. Las aplicaciones que tienen derechos de root deben ser escritas 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 pedir a la su binario para hacerlo en su lugar. su preguntará a la aplicación que gestiona estos permisos (por ejemplo, SuperSU) si la aplicación tiene permiso para acceder a Root. Si no lo está, le pedirá que lo permita o lo deniegue. Entonces 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.

Aunque teóricamente es posible añadirlo a una aplicación, se trataría de un proceso no trivial que requeriría conocimientos de escritura de código smali, que es el formato interno de la máquina virtual Dalvik (la parte del sistema que ejecuta el archivo apk) llamada smali. E incluso entonces, habría un enorme riesgo de seguridad si la aplicación permite que otras aplicaciones accedan a ella: no sabría cómo mantener el acceso privilegiado Root separado de su acceso normal. Así que en realidad esto no es realmente factible.

2 votos

Para los que no saben lo que es el smali: Es el montaje dialecto para el código de la máquina virtual dalvik de Android y se utiliza a menudo en la ingeniería inversa de archivos dex. Lo que puede ser un poco confuso: La aplicación tiene que ocuparse por sí misma de convertirse en root de forma programada. Por eso el desarrollador tiene que incluirlo. Añadirlo a SuperSU no ayuda mientras la aplicación no ejerza sus derechos de Root.

0 votos

¿Así que no puedo abrir un archivo de texto Root a través de mi editor de texto favorito si los programadores no codificaron la aplicación para aceptar la apertura de archivos Root?

2 votos

Absolutamente correcto. Para dar un ejemplo: si la aplicación no se inicia con Root, y trata de abrir algún "archivo de Root", simplemente obtendría un "permiso denegado" - ya que el acceso al archivo todavía se hará con el UID de la aplicación (será no pedir permisos de superusuario para abrirlo). Por otra parte, si la aplicación se inicia utilizando el UID de root (es decir su <app> ), accederá a ese archivo Root como Root, y así obtendrá permiso.

2voto

Graeme Evans Puntos 21

He encontrado una manera que puede ayudarte. Usé esto para darle a Root acceso a Tasker .

Si utiliza el emulador de terminal para conceder acceso de lectura pero no de escritura a una carpeta utilizando

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

entonces tu editor de texto será capaz de leer ese directorio y si puedes intentar guardar un archivo en la carpeta entonces intentará pedir permiso a Root.

También puede dar un error de escritura.

0 votos

Todos los directorios en /location/of/folder/ desde root hasta la cima debe ser legible/transitable. Además, SELinux puede denegar el acceso. Así que este enfoque es raramente práctico.

-1voto

Ashwin Puntos 1

Bueno, hay una salida, aunque es un poco larga. En primer lugar, necesitas tener el código fuente de la aplicación que necesitas instalar. Luego localiza el archivo principal de Java (que puedes encontrar en el "paquete"). Sólo tienes que añadir el siguiente código Proceso p = Runtime.getRuntime().exec("su");

Y ya has terminado :)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X