Czy istnieje sposób, aby uruchomić powłokę Adb jako root bez wpisywania „su”?

45

Czy istnieje sposób, aby uruchomić powłokę Adb jako root bez wpisywania su? Chcę mieć dostęp do roota bez wchodzenia do powłoki.

Motek
źródło

Odpowiedzi:

40

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ć, suaby 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):

  1. Flash ROM, który zawiera modyfikację
  2. Utwórz niestandardowy plik boot.img i prześlij go do telefonu
  3. Uruchom ponownie adbdna urządzeniu z uprawnieniami administratora

Numer 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 shellbez 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 adbdurządzenia z uprawnieniami administratora. Jedną z możliwości jest uruchomienie adb rootz 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 rootponownie przy każdym ponownym uruchomieniu telefonu.

eldarerathis
źródło
Czy telefon uruchamia się również z uprawnieniami roota? Może to być problem z bezpieczeństwem.
Mateusz
1
@Matthew: AFAIK, adbddomyś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 adbdsprawdza 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.
eldarerathis
Powiem jednak, że nie jestem w 100% na powyższym. Nie mogę znaleźć żadnej oficjalnej dokumentacji związanej z plikiem default.prop, choć być może moja dzisiejsza
wersja
Właśnie odkryłem adb rootpolecenie ponownego uruchomienia adbd w trybie auto-su, najwyraźniej polega na tym. Myślę jednak, że miałeś rację, że to tylko flaga.
Mateusz
1
@MatthewRead: Kod źródłowy w zatwierdzeniu, z którym się łączyłem, zawiera komentarz do tego efektu :) // ... 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.
eldarerathis
15

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.

Ajster1989
źródło
1

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.

Bryan Denny
źródło
Chcę uruchomić adb shell gdbserver z mojego terminala zamiast wchodzić w powłokę, aby go uruchomić
Hank
2
@Hank: terminal prawie zawsze musi być podłączony do powłoki, aby wykonać jakąkolwiek przydatną pracę; być może powinieneś wyjaśnić swoją definicję „terminalu” i „powłoki”, ponieważ wydaje się, że masz inne pojęcie o tym, czym one były niż w standardowym języku Linux / Android
Lie Ryan
więc można zrobić adb shell psalbo adb shell, a następnie ps, aby otrzymać listę procesu. Więc coś wymaga dostępu do roota, chcę móc zrobić to pierwsze.
Hank
1
Powodem „dlaczego” (szczególnie w przypadku gdbserver) miałaby być możliwość wykorzystania tej możliwości w skrypcie uruchomionym na komputerze programistycznym. Możliwe jest jednak, że skrypt przesyła polecenia do tego, co adb uważa za interaktywną powłokę, więc posiadanie domyślnego katalogu root w rzeczywistości nie jest konieczne z tego powodu.
Chris Stratton
1

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.

Matthew Read
źródło
0

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

zestaw mauro Barcelona
źródło
-1

Możesz także ustawić bit suid na swoim „sh”. Korzystam z BusyBox, więc instrukcje mogą nie pasować do Twojej konfiguracji:

  1. powłoka adb
  2. su
  3. mount -o remount, rw / system (lub: adb remount)
  4. ls -la / system / bin / sh lrwxr-xr-x root shell 11.11.2012 15:20 sh -> mksh
  5. chmod 4755 / system / bin / sh
  6. ls -la / system / bin / mksh
    -rwsr-xr-x root shell 157520 2012-11-10 09:54 mksh (zauważ, że bit suid jest ustawiony)
  7. ^ D
  8. powłoka adb

i powinieneś mieć monit root

Looneybits
źródło
3
-1 ode mnie. Jest to niepewne i otwiera ogromną dziurę. Każda aplikacja może zostać zrootowana i siać spustoszenie.
ce4
6
Absolutnie tego nie rób, to katastrofalna dziura w bezpieczeństwie . (Zastrzeżenie: Jestem mkshopiekunem).
mirabilos