2 votos

¿Cómo se pueden ejecutar ejecutables nativos compilados para ARM en dispositivos Android sin root?

Siguiendo este tutorial he compilado un ¡Hola Mundo! ARM binario de fuente C usando gcc . Quiero ejecutar este programa en mi teléfono Android sin root, pero no puedo encontrar una forma fácil de hacerlo.

Lo que he intentado:

  1. Copia hello a /sdcard y tratando de dirigirlo desde allí. Esto no funciona porque el almacenamiento interno está montado con el noexec bandera.

  2. Copia hello a /data/local/ usando cp hello /data/local/ o cat hello > /data/local/hello como explicado aquí . Esto tampoco funciona y obtengo un error de "permiso denegado".

  3. Instalar un programa emulador de terminal como Termux y usando la aplicación Termux para copiar hello de /sdcard/hello a /data/data/com.termux/files/home corriendo chmod +x hello y luego corriendo ./hello del directorio principal de Termux dentro de la aplicación Termux . Esto funciona pero no es una solución factible.

¿Hay una forma mejor o más fácil de ejecutar los ejecutables nativos de ELF en un teléfono Android sin root directamente a través de ADB y no implica la instalación de ninguna aplicación?

4voto

Jack Wade Puntos 231
  1. Además de noexec opción de montaje, /sdcard es emulado sistema de archivos con permisos de archivo fijos. Así que los archivos no pueden ser configurados como ejecutables. Pero algunos exploradores de archivos como MiXplorer soportan la ejecución de binarios/scripts de /sdcard a través de /system/bin/sh .
  2. /data/local tiene permisos 0751 dueño root.root 1 así que las aplicaciones normales no pueden acceder a ella. Sin embargo, desde adb shell use /data/local/tmp que tiene un usuario/grupo propietario 2000 (aid_shell) 2 y el selinux también está permitido 3 . Así que no se te negará el permiso.
  3. Si no quieres usar el PC, el emulador de terminales es la única opción. En Termux también puedes añadir /data/local/tmp (o un subdirectorio) a $PATH por la edición ~/.profile si quieres evitar colocar binarios en múltiples lugares. Pero el directorio debe ser legible por todo el mundo y selinux no debe negar el acceso o la ejecución de los binarios.

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