root w Linuksie (lub dowolnym systemie uniksowym) to tylko użytkownik o identyfikatorze użytkownika 0. Program su (który w rzeczywistości oznacza „Switch User”, a nie „Super User”) to po prostu program do uruchomienia innego programu z innym ID użytkownika niż program startowy (domyślnie do UID 0, czyli root użytkownika). Android nie używa tradycyjnego pliku / etc / passwd, jednak nadal używa identyfikatora użytkownika Linux i identyfikatora grupy do zarządzania uprawnieniami.
Jeśli chcesz przechwytywać żądania su, aby poprosić o hasło lub egzekwować inne reguły, musisz zastąpić / sbin / su własną wersją su. Alternatywnym podejściem jest opisane tutaj: http://www.koushikdutta.com/2008/11/fixing-su-security-hole-on-modified.html, chociaż będzie to wymagało współpracy aplikacji poprzez uruchomienie Intencji, gdy chcą Zmień użytkownika.
Struktura zabezpieczeń systemu Android jest mniej więcej taka: każda zainstalowana aplikacja działa z własnym identyfikatorem użytkownika (wybranym podczas instalacji), a uprawnienia aplikacji są wdrażane jako grupy użytkowników.
Czy mogę zmienić hasło roota po zrootowaniu urządzenia z Androidem, wpisując po prostu „passwd”?
Android nie używa / etc / passwd, więc też nie ma passwd
programu.
jak działa proces rootowania? mam na myśli, co aplikacje „root jednym kliknięciem” robią z moim telefonem?
Nie jestem pewien co do dokładnego procesu, prawdopodobnie chcesz poprosić o zrootowanie programistów. Sądzę jednak, że po prostu przywraca kontrolę bezpieczeństwa, która pierwotnie uniemożliwiała programistom ustawienie setuid 0.
Jestem programistą, więc jak znaleźć ukryte interfejsy API (takie jak iOS) do tworzenia aplikacji zrootowanych?
Ponieważ Android jest oprogramowaniem typu open source, w systemie Android nie ma naprawdę ukrytego interfejsu API. Istnieją jednak niepublikowane lub nieudokumentowane interfejsy API, które można znaleźć w kodzie źródłowym Androida . Jednak te interfejsy API nie dotyczą opracowywania root, zwykle są to interfejsy API w fazie rozwoju, które nie są jeszcze gotowe lub są zbyt zlokalizowane do określonego celu, który nie jest użyteczny dla programistów publicznych (a może Google po prostu jeszcze nie zdał sobie sprawy z ich przydatności) . Nie masz ograniczeń w korzystaniu z tych interfejsów API, ale ponieważ nie są one oficjalnie obsługiwanymi interfejsami API, mogą w przyszłości zniknąć lub złamać kompatybilność wsteczną. Jeśli musisz korzystać z tych interfejsów API, upewnij się, że aplikacja działa poprawnie.