En producción, en la construcción user
de una ROM, no se puede iniciar adbd
como root a menos que la ROM o al menos el binario adbd
se reconstruya con las modificaciones requeridas. La razón es la bandera de compilación ALLOW_ADBD_ROOT
(1, 2).
Por eso se desarrolló adbd Insecure, que reemplazó el binario adbd
con uno modificado.
En una construcción userdebug
o eng
(o con el binario adbd
inseguro extraído de cualquiera de estos tipos de construcción):
- Si
ro.secure=0
, adbd
se ejecuta como root cuando se habilita desde Configuración (Opciones de desarrollador) (3). Sin embargo, adb root
no funcionará (4).
- Si
ro.debuggable=1
, adb root
reiniciará adbd
como root (5, 6).
Sin embargo, adbd
se puede compilar a partir de código fuente modificado para omitir todas estas comprobaciones. Además, SELinux también debe ser tenido en cuenta, si está en modo enforcing
. adbd
debe ser permitido para ejecutarse en un contexto de superusuario no restringido: u:r:su:s0
(7, 8), lo cual no es el caso para las compilaciones user
(9, 10, 11). Ver esta respuesta para más detalles.
Las propiedades de Android se pueden sobrescribir usando /data/local.prop
en las compilaciones userdebug
/eng
, es decir, si se establece la bandera de compilación ALLOW_LOCAL_PROP_OVERRIDE
(12, 13). Pero esto no funciona para propiedades ro.*
(14) y lo mismo es cierto para la herramienta de línea de comandos setprop
. Sin embargo, el archivo default.prop
/ prop.default
, que podría estar ubicado en múltiples ubicaciones posibles dependiendo de las configuraciones de construcción del dispositivo (15), se puede modificar para cambiar propiedades de solo lectura (si aún no están establecidas desde algún otro archivo de propiedades o archivo *.rc
). Si el archivo está en la ramdisk, se necesita modificar boot.img
.
La herramienta resetprop de Magisk puede restablecer las propiedades de solo lectura aunque ya estén establecidas. Las propiedades ro.secure
y ro.debuggable
probablemente hayan sido cambiadas como parte de la política de MagiskHide (16), las cuales puedes revertir para permitir que adbd
se ejecute como root.
Otra propiedad relacionada es ro.adb.secure
, que controla la autenticación de clave pública. Al establecer ro.adb.secure=0
en las compilaciones userdebug
/eng
, la autenticación se omite (nunca se muestra el mensaje device unauthorized
) (17, 18, 19); relacionado: Ubicación de almacenamiento de "adb_keys".
1 votos
Me pregunto por qué no arroja un mensaje de error. Hasta donde tengo entendido,
adb root
no funciona en "versiones de producción" (como ROMs originales, incluso si están rooteadas). Entonces, a menos que tengas una "ROM de desarrollador", las posibilidades de que esto funcione son bastante bajas.2 votos
He establecido ro.debuggable a 1, sin embargo.
0 votos
Dudo que eso sea suficiente. Pero hace bastantes años que jugué por última vez con eso.