Czym dokładnie jest superuser.apk i su?

32

Dużo czytałem na temat rootowania urządzeń z Androidem. Naprawdę chcę dokładnie wiedzieć, co dzieje się na każdym kroku, zanim zaangażuję się w proces.

Jestem trochę zdezorientowany, skąd pochodzą pliki superuser.apk i su. Nie wygląda na to, że są to oficjalne pliki Google, ale raczej pliki utworzone przez (losową) osobę. To powiedziawszy, jak bezpieczne są te pliki?

Z badań mam ogólne zrozumienie ich celu. Zastanawiałem się, czy ktoś wiedział, co to są pliki (pliki wykonywalne? Skrypty?), Co one zawierają i jak ogólnie działają.

Dzięki!

kaspnord
źródło
Powiązane: Jak działa Magisk?
Irfan Latif

Odpowiedzi:

32

su(skrót od Switch User) to binarny plik wykonywalny. Jest używany przez Androida i inne systemy oparte na * nix, aby umożliwić procesowi zmiany konta użytkownika, z którym jest powiązany. Powód, dla którego jest to ważne z punktu widzenia rootowania, polega na tym, że subez żadnych innych parametrów przełączy się na użytkownika root, co oznacza, że ​​procesy wymagające uprawnień roota dla ich funkcjonalności muszą zostać wywołane su(ponieważ domyślnie nie są uruchamiane przez roota).

Superuser to aplikacja na Androida (.apk to pakiet aplikacji na Androida). Działa jako rodzaj „strażnika” pliku subinarnego. Aplikacje, które próbują się uruchomić, subędą zmuszone do trasowania przez Superuser, który następnie wyświetli monit dla użytkownika, jeśli jest to nieznana lub nowa aplikacja. Użytkownik ma wtedy możliwość zatwierdzenia lub odmowy dostępu sui opcjonalnego zapamiętania przez Superużytkownika swojej decyzji, aby mógł automatycznie zastosować ją do kolejnych połączeń przez tę aplikację. W ten sposób jedynymi aplikacjami, którym przyznano uprawnienia root, są aplikacje wybrane przez użytkownika.

Źródło obu aplikacji jest dostępne na Github i może być badane / kontrolowane przez każdego, kto chce na to spojrzeć (Superuser tutaj , su tutaj ).

Dalsze szczegóły - a także dzienniki zmian - można znaleźć na stronie internetowej Superuser .

Inne powiązane pytania dotyczące entuzjastów Androida:

eldarerathis
źródło
1
Naprawdę doceniam szczegółową odpowiedź i linki! Dzięki!
kaspnord
1
Czy są jakieś alternatywy / odpowiedniki tych plików do celów rootowania Androida?
kaspnord
1
@kaspnord: Nie, suto ten sam plik, który jest używany w innych systemach operacyjnych Linux / Unix i nie ma żadnych alternatyw dla tego, ale może być superuser.apk. Dlaczego chcesz alternatywy?
Kyrias
3
Jestem ciekawy, ponieważ te pliki, choć pobłogosławione przez społeczność Open Source, nie wydają się mieć żadnego standardu (tj. Nie oficjalnie Google). To prowadzi mnie do wniosku, że inni ludzie mogą tworzyć inne warianty tych samych plików. Dla mnie osobiście chcę dokładnie wiedzieć, czego używam i wkładam do swojego urządzenia, zamiast polegać na rozwiązaniach innych, w których nie jestem w stanie w 100% mieć pewności, co zawierają pliki.
kaspnord
11

Kod źródłowy główny użytkownik jest dostępny na github, główny autor główny użytkownik są Adam Shanks ( ChainsDD ) i Koushik Dutta ( koush , również autor Mechaniczna odzyskiwania).

Koushik Dutta wyjaśnił na swoim blogu, jak działa Superuser.apk ; zauważ, że post pochodzi z najwcześniejszego wcielenia aplikacji Superuser, od tego czasu wiele się zmieniło i niektóre z tego, co zostało napisane, nie są już poprawne dla nowoczesnej implementacji superużytkownika / su, ale podstawy powinny pozostać takie same.

Zarówno su, jak i Superuser można z pewnością zastąpić alternatywami, ale tak naprawdę nie zrobiłoby to wiele, ponieważ narzędzie, z którego korzysta su (tj. Wywołania systemowe exec () i setuid ()), jest dostępne dla wszystkich plików wykonywalnych, biorąc pod uwagę, że plik wykonywalny miał odpowiednie bity uprawnień (tzn. bit setuid jest ustawiony na root). Zasadniczo su jest bardzo prostym programem, po prostu spawnuje proces jako inny użytkownik; prawdziwe sprawdzenie bezpieczeństwa odbywa się przez jądro.

Tak więc, dopóki otrzymujesz oficjalną, niezmodyfikowaną aplikację su i superuser i są one poprawnie zainstalowane z odpowiednim pozwoleniem, nie masz się czym martwić, są otwarte i bezpieczne, możesz zweryfikować źródło koduj się na github. Jednak z pewnością możliwe jest uzyskanie binarnego superużytkownika / su binarnego, więc upewnij się, że gdziekolwiek otrzymujesz superużytkownika / binarny su jest godny zaufania (lub sam skompiluj su / superuser, jeśli naprawdę jesteś paranoikiem).

Lie Ryan
źródło