Odpowiedzi:
Jeśli dobrze rozumiem twoje pytanie, pytasz, jak automatycznie uzyskać dostęp do roota po uruchomieniu adb shell
, abyś nie musiał wchodzić do powłoki i pisać, su
aby wykonać polecenie jako root na telefonie.
Jest to kontrolowane przez flagę na partycji rozruchowej, którą większość niestandardowych ROM-ów zmodyfikowała, aby domyślnie zezwalać na rootowanie. Jeśli zostaniesz upuszczony na a, $
gdy używasz adb shell
, masz dwie stałe opcje i jedną tymczasową (tymczasowe, co oznacza, że nie zostanie zablokowane po ponownym uruchomieniu):
adbd
na urządzeniu z uprawnieniami administratoraNumer 2 nie jest tak trudny, ale może być nieco niebezpieczny, jeśli jesteś nieostrożny. Jest tutaj artykuł wiki , który wyjaśnia ten proces i zawiera kilka skryptów Perla, które mogą ci pomóc. Te instrukcje zakładają środowisko Linux / Unix. Osobiście skorzystałem z tych instrukcji w Fedorze Linux i mogę powiedzieć, że działają, ale nie wiem o innych środowiskach * nix, takich jak Mac. Nie znam też podobnych instrukcji dla systemu Windows, ale mogę spróbować je wyśledzić, jeśli korzystasz z systemu Windows. Dokładne polecenia będą się różnić w zależności od telefonu, ponieważ różne urządzenia używają różnych tabel partycji.
Ogólnie rzecz biorąc, musisz jednak pobrać bieżący plik boot.img z telefonu, rozpakować go, rozpakować ramdysk i znaleźć plik default.prop . Jest to plik zwykłego tekstu, który należy otworzyć w edytorze tekstu, a następnie znaleźć wiersz zawierający wartość ro.secure
. Jeśli linia mówi ro.secure=1
, musisz to zmienić na ro.secure=0
. Następnie możesz ponownie spakować ramdysk i boot.img, a następnie sflashować go do telefonu. Po ponownym uruchomieniu komputera pojawi się #
monit, gdy będziesz wykonywać adb shell
bez konieczności uruchamiania su
.
Alternatywnie, jeśli używasz niestandardowej pamięci ROM, ale nie ma tej modyfikacji, możesz po prostu rozpakować pamięć ROM i zmodyfikować dołączony do niej plik boot.img, wykonując powyższe kroki. Następnie możesz spakować ROM z nowo zmodyfikowanym boot.img i sflashować plik zip jak zwykle.
Prawdopodobnie jest to oczywiste, ale zachowaj ostrożność . Bałaganowanie partycji rozruchowej może dość łatwo zniszczyć telefon i zmusić cię do odzyskania za pośrednictwem HBoot. Zdecydowanie polecam przetestowanie Fastboot, aby upewnić się, że możesz używać rozszerzonych poleceń Fastboot i przeprowadzić odzyskiwanie. Różni się to nieco w zależności od modelu, ale większość telefonów ma oprogramowanie komputerowe, które można uruchomić również w celu ponownego flashowania telefonu.
Trzecią opcją jest to, że w wielu przypadkach może być możliwe ponowne uruchomienie adbd
urządzenia z uprawnieniami administratora. Jedną z możliwości jest uruchomienie adb root
z terminala PC, chociaż nie będzie to działać we wszystkich konfiguracjach ROM (ROM musi być zbudowany jako „userdebug”). Możesz także wypróbować niezabezpieczoną aplikację Chainfire . Nie będzie się to utrzymywało podczas ponownego uruchamiania, więc będziesz musiał skorzystać z aplikacji lub adb root
ponownie przy każdym ponownym uruchomieniu telefonu.
adbd
domyślnie pozwala tylko na uprawnienia roota na telefonie. Jest post od członka zespołu Androida, który sugeruje to, ale nie mówi tego wprost. To zobowiązanie do AOSP oznacza również, że jest to po prostu flaga, która adbd
sprawdza się przy starcie (nie widzę go gdzie indziej w źródle). Jak wspomniałem, większość niestandardowych ROMów, które widziałem (w tym CM) ma ustawioną wartość 0.
adb root
polecenie ponownego uruchomienia adbd w trybie auto-su, najwyraźniej polega na tym. Myślę jednak, że miałeś rację, że to tylko flaga.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Nawiasem mówiąc, tak działała pierwsza wersja BurritoRoot dla Kindle Fire, IIRC.
Jeśli telefon jest zrootowany, możesz uruchamiać polecenia za pomocą polecenia „su -c”.
Oto przykład polecenia cat w pliku build.prop, aby uzyskać informacje o produkcie dla telefonu.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
To wywołuje uprawnienia roota i uruchamia polecenie wewnątrz ''
Zwróć uwagę na 5 cytatów końcowych, które są wymagane do zamknięcia WSZYSTKICH ofert końcowych, w przeciwnym razie otrzymasz błąd.
Dla wyjaśnienia format jest taki.
adb shell "su -c '[your command goes here]'"
Upewnij się, że wpisujesz polecenie DOKŁADNIE w taki sam sposób, jak normalnie podczas uruchamiania go w powłoce.
Spróbuj, mam nadzieję, że to pomoże.
Wystarczy zainstalować adbd Niepewne .
Po co próbujesz uruchomić jako root? Mówisz, że chcesz uruchomić powłokę ADB z rootem, ale nie chcesz używać powłoki ADB? Możesz wyjaśnić?
Jeśli aplikacja zażąda dostępu do konta root, aplikacja SuperUser w telefonie powinna obsłużyć udzielanie jej uprawnień, czy nie. Proces rootowania telefonu powinien obejmować aplikację SuperUser.
adb shell ps
albo adb shell
, a następnie ps
, aby otrzymać listę procesu. Więc coś wymaga dostępu do roota, chcę móc zrobić to pierwsze.
Alternatywnie możesz napisać skrypt na telefonie i po prostu poprosić adb o wykonanie go, na przykład:
adb shell sh /sdcard/myscript.sh
Skrypt może się podnieść bez Twojej interwencji (zakładając, że SuperUser jest ustawiony na zapamiętywanie zatwierdzenia), na przykład:
su
pm setInstallLocation 1
Zrobiłem to z powodzeniem na moim telefonie, jedynym problemem jest to, że nie do końca zrozumiałem, jak w czysty sposób zakończyć sesję powłoki adb. Muszę Ctrl-C w mojej powłoce Windows, aby wrócić do wiersza polecenia systemu Windows - w przeciwnym razie adb po prostu siedzi w #
wierszu i nie przyjmuje danych wejściowych.
Używam do naprawy problemu z przyciskiem Home
urządzenia adb
adb shell su -c commands
lub
adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db „WSTAWIĆ W bezpieczne (nazwa, wartość) WARTOŚCI („ urządzenie zatwierdzone ”,„ 1 ”);”
adb kill-server
Możesz także ustawić bit suid na swoim „sh”. Korzystam z BusyBox, więc instrukcje mogą nie pasować do Twojej konfiguracji:
i powinieneś mieć monit root