18 votos

¿Por qué no se puede copiar simplemente el binario su (respuesta técnica, por favor)?

He rooteado varios dispositivos Samsung y el "objetivo" subyacente por así decirlo parece ser conseguir el su binario en /system/xbin e instalar Superusuario.apk .

Mi pregunta es ¿por qué hay que pasar por todos estos aros para Rootear el teléfono (instalar el custom recovery y flashear la ROM pre-rooteada o explotar la instalación actual)? ¿No podría uno simplemente descargar un su precompilado, moverlo a la tarjeta SD, y ejecutarlo a través de adb? Lo que parece hacer que una ROM esté "pre-rooteada" es que tenga Superuser y el binario su en sus respectivas rutas de sistema. No veo por qué es tan importante que se ejecute desde /system/xbin .

24voto

David Negron Puntos 971

El binario su necesita tanto el bit de permiso de ejecución como el de setuid. El primero es necesario para que el archivo pueda ser ejecutado y el segundo para que se ejecute automáticamente con los derechos del propietario del archivo (set user id, o setuid. En este caso el propietario es Root. Leer más aquí ).

Los archivos en el almacenamiento externo no tienen los bits de permiso ejecutable y setuid establecidos y no se puede conceder sin derechos de Root. Tenga en cuenta también que la tarjeta SD está montada con la bandera 'noexec' para evitar la ejecución generalmente al arranque:

shell@android:/sdcard $ ./su
/system/bin/sh: ./su: can't execute: Permission denied
126|shell@android:/sdcard $ chmod 4755 su
Unable to chmod su: Operation not permitted
10|shell@android:/sdcard $ mount | grep /mnt/sdcard
/dev/block/mmcblk0p1 /mnt/sdcard vfat [...],noexec,[...]

Básicamente por eso no se puede copiar su en la tarjeta SD y luego ejecutarlo para concederse Root.

5voto

Nick Pierpoint Puntos 7976

El rooting implica explotar la debilidad dependiendo de la versión de Android, de ahí que " pasar por todos los aros para Root el teléfono "

Es un huevo y una gallina.

Para explotar Root, se necesita un demonio adb inseguro (es decir, la capacidad de remontar /system ¡) en el teléfono, y para tener un adb no seguro, necesitas Root! Y además, necesitas un bootloader desbloqueado.

Echa un vistazo a uno explotar llamado zergRush encontrado en github; la función de interés se llama do_fault() donde se intenta "romper" el marco de la pila del vold conectándose a la tubería que le pertenece, y hacer que se bloquee sobrescribiendo el puntero de la pila para que apunte a una versión copiada del shell boomsh que luego se ejecuta desde /data/local/tmp .

Después de leer la fuente, ahora te darás cuenta, por qué copiar el su binario no es suficiente para tener el teléfono "rooteado" y por qué hay que pasar por el aro. ¡Y también, como el bit ejecutable en el nivel de sistema de archivos para la tarjeta SD está bloqueado, así que no ir allí - que está ahí por razones obvias! :)

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