2012-09-27 9 views
6

Czy istnieje sposób na uruchomienie aplikacji systemu Android bez uprawnień roota? Mogę uruchomić aplikację systemową przez adb, taką jak:Jak uruchomić aplikację systemu Android bez uprawnienia root?

adb shell /system/bin/screencap -p /sdcard/screen.png

W mojej własnej aplikacji chcę uruchomić polecenie powłoki w ten sposób bez polecenia "su". Czy jest jakiś sposób? W jaki sposób Android zapobiega uruchamianiu aplikacji systemowej przez aplikacje użytkownika?

Odpowiedz

7

Powinieneś być w stanie uruchomić tego polecenia w kodzie Java:

Runtime.getRuntime().exec("screencap -p /sdcard/screen.png"); 

Istnieje kilka poleceń powłoki można wykonać bez konieczności korzeń. Więc nie musisz uruchamiać "su". Nie jestem pewien, czy możesz wykonać screencap. Z pewnością potrzebujesz pozwolenia na zapis na SD_CARD w swojej aplikacji.

android.permission.WRITE_EXTERNAL_STORAGE 

Ale dlaczego nie używasz interfejsu API systemu Android do tworzenia zrzutów ekranu? Aby uzyskać więcej informacji przeczytaj ten post na stackoverflow: How to programmatically take a screenshot in Android?

Androids model bezpieczeństwa bazuje na identyfikatorach użytkowników, podobnie jak Linux. Każda aplikacja otrzymuje własny identyfikator użytkownika. Tak więc Twoja aplikacja ma identyfikator użytkownika podobny do 1001. Jeśli Twój użytkownik może uruchomić polecenie, możesz, w przeciwnym razie pojawi się błąd.

EDIT:
Trzeba korzeń do robienia zrzutów ekranu lub być zastosowanie systemu. Istnieje uprawnienie READ_FRAME_BUFFER, ale można je uzyskać tylko, gdy jest się aplikacją systemową. Jest to problem związany z bezpieczeństwem, gdy aplikacja może robić zrzuty ekranu Twojego urządzenia.

Znalazłem ten interfejs API http://code.google.com/p/android-screenshot-library/, który obiecuje wykonywać zrzuty ekranu bez roota. Nie testowałem tego. Biblioteka uruchamia natywną usługę, która następnie wykonuje dla Ciebie zrzuty ekranu. Ale musisz uruchomić usługę przy każdym uruchomieniu telefonu. Otrzymuje więc uprawnienia systemowe. To nie jest bardzo wygodne ...

Wniosek: Nie ma dobry sposób do robienia zrzutów ekranu bez korzenia z kodem ...

+0

AFAIK, brak interfejsu API do przechwytywania zrzutów ekranu. Tak więc próbuję wykonać screencap za pomocą polecenia powłoki. Ale nie mogę tego wykonać bez uprawnień roota. –

+0

Wygląda na to. Nie ma interfejsu API, a do uruchomienia aplikacji screencap potrzebny jest root. Znalazłem tę bibliotekę http://code.google.com/p/android-screenshot-library/ z tym, że powinno być możliwe robienie zrzutów ekranu bez roota. Instaluje natywną usługę, uruchamianą podczas rozruchu przez powłokę adb. Więc jest zdolny do robienia zrzutów ekranu. – mcia

+0

Próbowałem już wcześniej. Nie działa na systemach Android 3.x i Android 4.x, ponieważ tam został złamany framebuffer. Akceptowalnym sposobem jest teraz wywołanie komendy screencap za pomocą polecenia powłoki (w permeat root). –

2

Is there any way to run android system app without root permission?

To musiał być NO, ale kilka razy, niektóre funkcje, które nie są do użytku publicznego nadal można używać . Widziałem przykłady przy użyciu refleksji java.

I can execute system app via adb such as: ...

In my own application, I wanna run a shell command like that without "su" command. Is there any way? How does android prevent user apps to execute system app?

Myślę, że nie.

Rzecz adb shell i użytkownik app mają różne poziomy ochrony w oparciu o identyfikatory użytkowników i grup (UID i GID).

Więcej informacji: http://android-dls.com/wiki/index.php?title=Android_UIDs_and_GIDs

Poza tym istnieją ograniczenia przez uprawnienia aplikacji i Hiden klas & wewnętrzne, procedury, itp, które złożyły do ​​użytku wewnętrznego.

P.S .: Informacje na temat zrzutów ekranu. Na rynku Android (Google Play) jest kilka aplikacji, które zapewniają zrzuty ekranu bez dostępu do ROOT.To jest możliwe. Chociaż od czasu premiery Androida 4.0 są dostępne "z pudełka".

+0

Dbasz o to, które aplikacje mogą to zrobić? Moglibyśmy je zdekompilować i dowiedzieć się, jak to działa. –

Powiązane problemy