Dlaczego potrzebujemy zrootowanego telefonu do robienia zrzutów ekranu na starszych wersjach Androida?

21

Rozumiem, że aby robić zrzuty ekranu z mojego telefonu, wszystkie aplikacje do zrzutów ekranu wymagają posiadania zrootowanego telefonu. Dlaczego tak jest? Dlaczego nie możemy mieć prostej aplikacji do zrzutów ekranu dla systemu Android, tak jak w przypadku systemu Windows?

Cheok Yan Cheng
źródło
2
Zawsze uważałem za interesujące, że iPhone implementuje tę funkcję od razu po wyjęciu z pudełka, podczas gdy jest to poważna sprawa, aby włączyć ją na Androidzie.
shambleh
1
Należy pamiętać, że od około Androida 4.0 można zrobić zrzut ekranu, przytrzymując przyciski zmniejszania głośności i zasilania; jest to
gotowe do użycia

Odpowiedzi:

17

Odpowiedź jest raczej prosta, to kwestia uprawnień.

Android używa tak zwanego bufora ramki do wyświetlania wideo. Bufor ramki znajduje się w / dev / graphic / fb0. ten „plik”, który jest w zasadzie strumieniem, do którego urządzenie zapisuje, gdy nastąpią zmiany w interfejsie użytkownika, zawiera ~ 2 klatki ekranu.

Uprawnienia do pliku bufora ramki to rw- rw- ---. Zauważ, że ostatnia „grupa” ma 3 „-”. Zasadniczo oznacza to, że jeśli nie jesteś owner(który jest rootem), nie masz uprawnień nawet do odczytu z tego pliku.

Gdyby była zainstalowana aplikacja systemowa, która mogłaby robić zrzuty ekranu, miałaby uprawnienia do odczytu z bufora ramki. Wierzę, że w ten sposób Motorola Xoom może wykonywać zrzuty ekranu. Ma aplikację zainstalowaną na urządzeniu, jako aplikację systemową.

Czytanie bufora ramki dla programisty jest w rzeczywistości proste, jeśli mają dostęp do jego odczytu.

Ryan Conrad
źródło
1
Wygląda na to, że Google powinien zaktualizować uprawnienia do r--. Może to powodować zagrożenie bezpieczeństwa, jeśli jakakolwiek aplikacja może szpiegować na ekranie, ale czy nie byłoby to tylko jedno z uprawnień ( ta aplikacja może monitorować ekran ), które musisz zaakceptować przed instalacją? Albo to, albo Google powinien dodać wbudowany zrzut ekranu w menu wysuwanym, a nikt inny nie ma do niego dostępu. Te ostatnie bardzo mi się podobają, to znaczy, że właśnie teraz dodają podgląd wydruku do Chrome.
JD Isaacks
3
Myślę, że mod o + r byłby zagrożeniem dla bezpieczeństwa, gdyby tylko jakaś aplikacja rynkowa mogła odczytać ekran.
kzh
Myślę, że to zależy. System operacyjny Windows nie uniemożliwia aplikacjom robienia zrzutów ekranu. Czy do tej pory słyszeliśmy problemy z bezpieczeństwem spowodowane zrzutami ekranu?
Cheok Yan Cheng
Nie musisz robić zrzutów ekranu w systemie Windows, istnieją znacznie łatwiejsze sposoby na usunięcie danych z komputera z systemem Windows. Myślę, że mobilność jest większym problemem. Pomyśl tylko o aplikacjach takich jak Square, które przetwarzają karty kredytowe. Gdybym napisał usługę, która nasłuchiwała, kiedy karta została przesunięta, mógłbym zrobić zrzut ekranu i wyciągnąć informacje, takie jak numer karty kredytowej, nazwisko itp.
Ryan Conrad
7

Ze względu na skoncentrowanie się Androida na oddzielaniu wszystkich aplikacji od danych innych użytkowników, aby uniemożliwić złośliwym aplikacjom kradzież lub zmianę danych w zaufanych aplikacjach, nie mogą one pozwolić zrzutom ekranu z innych aplikacji.

Pomyśl, ile twoich aplikacji jest w stanie robić takie rzeczy jak OCR, aby tłumaczyć zdjęcia na tekst. Mogę wymyślić co najmniej cztery aplikacje na moim telefonie, które mogą to zrobić, najlepszym przykładem są tytuły książek OCRing Google Goggles, a także OCRing, a następnie tłumaczenie bloków tekstu na języki obce. Pomyśl teraz o tym, ile aplikacji wyświetla na ekranie tekst, którego nie chcesz, aby aplikacja nie była godna zaufania, mam w telefonie aplikację bazy danych haseł z zaszyfrowaną bazą haseł do różnych systemów, aplikacja na wygaszacz ekranu mogłaby poczekać dopóki aplikacja hasła nie uruchomi się, zrób zdjęcie ekranu z danymi logowania, a następnie OCR i wyślij je. To samo może zrobić to samo dla wszystkiego na liście kontaktów, nawet jeśli nie zezwolisz aplikacji na bazę danych kontaktów lub historię przeglądarki, lub dzienniki czatu i tak dalej. To tylko jeden sposób, w jaki może nadużywać dostępu do ekranu.

Dlatego, aby zrzuty ekranu były uniwersalne, muszą znajdować się w systemie operacyjnym (któremu już ufasz ze wszystkimi swoimi danymi). Dlatego w telefonach z wbudowaną funkcją zrzutu ekranu dodano ją jako część systemu, a nie jako osobną aplikację.

Jeśli zrootujesz telefon i zezwolisz aplikacji na robienie zrzutów ekranu, to skutecznie mówisz, że domyślnie ufasz tej aplikacji, aby mogła zrobić wszystko, co może zrobić system, w tym uzyskiwać dostęp do innych aplikacji i ich danych oraz zakłócać je oraz że całkowicie ufaj, że nie wykorzystasz tego dostępu. To nie jest coś, na co Android kiedykolwiek pozwoli na cokolwiek innego niż System / OS.

GAThrawn
źródło
6

Krótka odpowiedź: ponieważ 1) komputery są skomplikowane i 2) funkcja zrzutów ekranu nie jest w rzeczywistości bardzo prosta (dla programisty, a nie dla użytkownika).

Innymi słowy, wykonanie zrzutu ekranu wymaga wykonania zrzutu ekranu dość głęboko w wewnętrznych elementach systemu operacyjnego, trochę z nimi zepsuć i ponownie odczepić. Ponieważ Android próbuje mieć wbudowany model bezpieczeństwa (w przeciwieństwie do „przykręconej refleksji” widocznej w systemie Windows), zrzut ekranu pokazuje kilka barier bezpieczeństwa. Tych może być pomijany, ale jedyny obecnie praktyczny sposób (krótki tworzenia dziury - i potencjalnych luk - w jądrze) jest użycie wszechmocny konta root, który nie podlega ograniczeniom.

Piskvor
źródło
1
Nie wiem dużo o pracy sprzętu komputerowego, ale zakładam, że GPU wysyła „obraz” na ekran. Czy ten obraz nie mógł zostać przechwycony i zapisany?
JD Isaacks
2
@John Isaacks, to w zasadzie dzieje się z buforem ramki. zobacz moją odpowiedź, dlaczego nadal wymaga rootowania.
Ryan Conrad