Android ioctl: permisos y uso de root

Estoy trabajando en alguna funcionalidad de enrutamiento en una aplicación para Android y necesito acceder a ioctls. Dado que las aplicaciones que utilizan ioctls necesitan permiso de root para ejecutarse, la única forma en que he podido llamarlas es vincular un ejecutable independiente y llamar desde Java con Runtime.getRuntime().exec() .

¿Hay una manera de acceder a los permisos de root desde JNI en Android sin construir un ejecutable independiente? ¿Es la construcción de un ejecutable el mejor enfoque para acceder a un ioctl?

2 Solutions collect form web for “Android ioctl: permisos y uso de root”

No hay medios para que un proceso no root se convierta en root (más allá de exploits), así que sí, necesitas un proceso separado.

Esto se hereda sin cambios de linux – la diferencia es que no hay manera directa de lanzar un proceso de aplicación de Android como root desde el lanzador, ya que envía una intención de zygote que bifurca y privilegios-reduce a un niño que se especializa en un proceso de aplicación. (Puede haber un método indirecto para crear manualmente un proceso de aplicación, pero tendría que tener un proceso de aplicaciones para hacerlo, por lo que sería por definición un proceso secundario y sería ineficiente como una aplicación que no era un Hijo de zygote no heredaría el mapeo compartido de bibliotecas de sistema, y ​​por lo tanto tendría que cargar sus propias copias únicas en memoria)

Ioctl () es sólo otra syscall, y sólo requiere root si los permisos de acceso a ese fd (desde su archivo de dispositivo) lo hace. Obviamente, ése es el caso de los que desea utilizar, pero otros son unpriveleged. Por ejemplo, la mayoría del framework IPC de Android se implementa en última instancia con Binder ioctl, y se utilizan comúnmente para controlar un socket de red.

Las llamadas ioctl () no requieren explícitamente permiso root (o cualquier permiso específico) para usar. Como dijo Chris Stratton, necesitará permiso para acceder al dispositivo en cuestión. Si usted no tiene dicho permiso, usted no lo va a conseguir aparte de exploits.

¿Qué estás tratando de lograr?

  • ¿Las funciones de Android JNI se ejecutan en el hilo principal?
  • Cómo construir una biblioteca compartida sin JNI en Android?
  • Comparar imágenes SIFT / SURF detalles en archivos .yml OpenCV?
  • JNI ERROR DETECTADO EN APLICACIÓN: entrada no es válida UTF-8 modificado: byte de inicio ilegal 0xfc.
  • No se encontró JNI_OnLoad saltando init> Apagado de la aplicación
  • ¿Cómo funciona NDK en Android - ¿Cuál es la orden que NDK, JNI etc se utilizan?
  • Pasar el puntero de C a Java se convierte en NULL
  • Android ffmpeg simple JNI envoltorio
  • Compilación de Android JNI para OpenCV en Mac OSX
  • Código nativo - cómo obtener la pila de llamadas de función (backtrace) mediante programación
  • Cómo incluir bibliotecas compartidas precompiladas en apk con eclipse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.