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?
screenshots
Cheok Yan Cheng
źródło
źródło
Odpowiedzi:
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.
źródło
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.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.
źródło
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.
źródło