Android_emuroot es un script de Python que permite otorgar privilegios raíz en la mosca a los conchas que se ejecutan en máquinas virtuales de Android que utilizan imágenes emulador proporcionadas por Google llamadas Google API Playstore , para ayudar a los ingenieros revertir a profundizar en sus investigaciones.
Android_Emuroot requiere que el emulador de la tienda de play de Google API se inicie con la opción de TIM GDB QEMU habilitada, y la usa para alterar los metadatos de proceso almacenados en la memoria en las estructuras de tareas del kernel. La idea principal es comenzar desde un caparazón con los privilegios más bajos, luego encontrar su estructura de credencial asociada en la memoria del núcleo para reemplazarlo por otra estructura que tenga los privilegios más altos.
Implementación de esta modificación de memoria en un emulador de PlayStore de Google API presenta las siguientes dos ventajas:
Android_emuroot requiere tener un SDK de Android que funcione. Se recomienda la instalación de las herramientas de línea de comandos (descargable a través de Android Studio GUI: Herramientas> Android> SDK Manager> SDK Tools).
Android_emuroot es un script de Python que utiliza las instalaciones ADB, así como las instalaciones GDB de los dos siguientes módulos de Python:
Asegúrese de tener estos módulos o instalarlos a través de PIP: pip3 install -r requirements.txt .
NB: Android_emuroot es compatible con Python 2 y Python 3.
Dependiendo de la arquitectura de hardware y la versión del núcleo del emulador, el diseño de memoria de la imagen QEMU relacionada varía. Por lo tanto, la ubicación de los parches de memoria implementados por Android_emuroot también varía.
Por ahora, Android_emuroot admite las siguientes versiones de los emuladores:
| Versión de Android | API | Arquitectura | Núcleo | Construir |
|---|---|---|---|---|
| Android 7.0 | 24 | x86 | 3.10 | Google-API-Playstore |
| Android 7.1.1 | 25 | x86 | 3.10 | Google-API-Playstore |
| Android 8.0 | 26 | x86 | 3.18 | Google-API-Playstore |
| Android 8.1 | 27 | x86 | 3.18 | Google-API-Playstore |
Asegúrese de que el AVD que desea rootear se basa en un emulador de esta lista.
NB: Los emuladores se pueden descargar a través de SDKManager, una herramienta de Android Studio Toolchain, con la GUI o en la línea de comandos, por ejemplo: sdkmanager --install "system-images;android-27;google_apis_playstore;x86" . Luego, cree un dispositivo virtual Android (AVD) en consecuencia, a través de la GUI AVD Manager o con AvdManager como este: avdmanager create avd -n my_avd_name -k "system-images;android-27;google_apis_playstore;x86" .
Android_emuroot necesita interactuar con ambos:
El siguiente esquema muestra las interacciones entre todos los elementos:

Android Debug Bridge (ADB) es una herramienta de línea de comando de Android Studio Toolchain que permite comunicarse con un dispositivo Android. El servidor ADB es el componente que gestiona la comunicación entre Android_emuroot y el demonio ADB lanzado en el dispositivo. Por defecto, los servidores ADB escuchan en 127.0.0.1 puerto 5037 . adb start-server le permite asegurarse de que haya un servidor en ejecución.
Asegúrese de que su servidor ADB se esté ejecutando.
El otro requisito de usar Android_emuroot es adjuntar un servidor GDB a su AVD al iniciarlo. El emulador, otra herramienta de línea de comandos de Android Studio Toolchain, permite iniciar AVD con muchas opciones. Entre ellos: -qemu -s (Shorthang para -qemu -gdb tcp::1234 ) que abre un servidor GDB en el puerto TCP 1234.
Use esta opción para obtener un servidor GDB disponible.
Aquí hay un simple ejemplo del uso del emulador:
emulator -avd my_avd_name [options] -qemu -s
De esta manera, se adjuntará un servidor GDB al AVD my_avd_name y Android_emuroot podrá generar su cliente GDB y realizar los parches de memoria.
Una vez que tanto el servidor ADB como el servidor GDB están operativos, está listo para usar Android_emuroot.
Android_emuroot tiene 3 modos:
single --magic-name NAME : para dar privilegios raíz a solo 1 shell dada en el parámetroadbd [--stealth] : para dar privilegios raíz a todo el servidor adbd ; Cada nuevo caparazón será generado como raízsetuid --path NAME : para instalar un binario raíz setuid en el sistema de archivosMás detalles sobre el uso y la herramienta INTALES: Uso detallado
Android_emuroot ha sido escrito por Mouad Abouhali y Anaïs Gantet de Airbus-Seclab.
Android_emuroot se lanza bajo GPLV2.