Android Application-Level Virtualization (App Cloning)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Application-level virtualization (aka app cloning/container frameworks such as DroidPlugin-class loaders) ejecuta múltiples APKs dentro de una única app anfitriona que controla el ciclo de vida, la carga de clases, el almacenamiento y los permisos. Los guests a menudo se ejecutan dentro del UID del host, colapsando el aislamiento normal por aplicación de Android y dificultando la detección porque el sistema ve un solo proceso/UID.
Baseline install/launch vs virtualized execution
- Normal install: Package Manager extrae el APK →
/data/app/<rand>/com.pkg-<rand>/base.apk, asigna un UID único, y Zygote forkea un proceso que cargaclasses.dex. - Dex load primitive:
DexFile.openDexFile()delega aopenDexFileNative()usando rutas absolutas; las capas de virtualización comúnmente hook/redirect esto para cargar dex del guest desde rutas controladas por el host. - Virtualized launch: El host inicia un proceso bajo su UID, carga el
base.apk/dex del guest con un loader personalizado, y expone callbacks de lifecycle vía proxies Java. Las llamadas a APIs de almacenamiento del guest son remapeadas a rutas controladas por el host.
Abuse patterns
- Permission escalation via shared UID: Los guests se ejecutan bajo el UID del host y pueden heredar todos los permisos otorgados al host incluso si no están declarados en el manifest del guest. Hosts con exceso de permisos (AndroidManifest.xml muy grande) se convierten en “permission umbrellas”.
- Stealthy code loading: El host hookea
openDexFileNative/class loaders para inyectar, reemplazar o instrumentar dex del guest en tiempo de ejecución, evadiendo el análisis estático. - Malicious host vs malicious guest:
- Evil host: actúa como dropper/executor, instrumenta/filtra el comportamiento del guest, manipula crashes.
- Evil guest: abusa del UID compartido para acceder a datos de otros guests, ptracearlos, o aprovechar permisos del host.
Fingerprinting & detection
- Multiple base.apk in one process: Un contenedor suele mapear varios APKs en el mismo PID.
adb shell "cat /proc/<pid>/maps | grep base.apk"
# Suspicious: host base.apk + unrelated packages mapped together
- Hooking/instrumentation artifacts: Buscar libs conocidas (p. ej., Frida) en maps y confirmar en disco.
adb shell "cat /proc/<pid>/maps | grep frida"
adb shell "file /data/app/..../lib/arm64/libfrida-gadget.so"
- Crash-tamper probe: Provocar intencionalmente una excepción (p. ej., NPE) y observar si el proceso muere normalmente; hosts que interceptan las rutas de lifecycle/crash pueden engullir o reescribir los crashes.
Hardening notes
- Server-side attestation: Enforce sensitive operations behind Play Integrity tokens para que solo instalaciones genuinas (no guests cargados dinámicamente) sean aceptadas en el servidor.
- Use stronger isolation: Para código altamente sensible, preferir Android Virtualization Framework (AVF)/ejecución respaldada por TEE en lugar de contenedores a nivel de app que comparten un UID.
References
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


