root en Linux (o cualquier sistema similar a Unix) es solo el usuario con ID de usuario 0. El programa su (que en realidad significa "Switch User", no "Super User") es solo un programa para iniciar otro programa con un diferente ID de usuario que el programa de inicio (por defecto a uid 0, que es la raíz del usuario). Android no usa el / etc / passwd tradicional, sin embargo, todavía usa la ID de usuario de Linux y la ID de grupo para administrar los permisos.
Si desea interceptar las solicitudes de su para poder solicitar una contraseña o hacer cumplir otras reglas, deberá reemplazar / sbin / su con su propia versión de su. El enfoque alternativo es el que se describe aquí: http://www.koushikdutta.com/2008/11/fixing-su-security-hole-on-modified.html, aunque eso requerirá que las aplicaciones cooperen disparando una intención cuando lo deseen cambiar de usuario.
El marco de seguridad de Android es más o menos así: cada aplicación instalada se ejecuta en su propia ID de usuario (seleccionada en el momento de la instalación), y los permisos de la aplicación se implementan como grupos de usuarios.
¿Puedo cambiar la contraseña de root después de rootear mi dispositivo Android simplemente escribiendo "passwd"?
Android no usa / etc / passwd, por lo que tampoco tiene passwd
programa.
¿Cómo funciona el proceso de enraizamiento? Quiero decir, ¿qué están haciendo las aplicaciones de "raíz de un clic" en mi teléfono?
No estoy seguro con el proceso exacto yo mismo, es probable que desee pedir a los desarrolladores de rooteo. Sin embargo, supongo que solo revierte la verificación de seguridad que originalmente evitó que el desarrollador establezca 0.
Y soy un desarrollador, entonces, ¿cómo puedo encontrar API ocultas (como iOS) para el desarrollo de aplicaciones rooteadas?
Dado que Android es de código abierto, no hay una API verdaderamente oculta en Android. Sin embargo, hay algunas API no publicadas o indocumentadas, puede buscar esto en el código fuente de Android . Sin embargo, estas API no son sobre desarrollos raíz, generalmente son API en desarrollo que aún no están listas o están demasiado localizadas para un propósito específico que no es útil para el desarrollador público (o quizás Google simplemente no se ha dado cuenta de su utilidad aún) . No está restringido el uso de estas API, pero dado que estas no son API oficialmente compatibles, pueden desaparecer o romper las compatibilidades hacia atrás en el futuro. Si necesita usar estas API, asegúrese de que su aplicación se rompa con gracia.