Зачем нам нужен рутированный телефон, чтобы делать скриншоты на старых версиях Android?

21

Я понимаю, что для того, чтобы делать скриншоты моего телефона, все приложения для скриншотов требуют, чтобы у меня был рутированный телефон. Почему это так? Почему у нас не может быть простого приложения для скриншотов для Android, как у нас для Windows?

Чеок Ян Ченг
источник
2
Мне всегда было интересно, что iPhone реализует эту функцию «из коробки», в то время как это главное для Android.
Шамбл
1
Обратите внимание, что, начиная примерно с Android 4.0, можно сделать снимок экрана, удерживая кнопки «Вниз» + «Питание»; это
готовая

Ответы:

17

Ответ довольно прост, это проблема с разрешениями.

Android использует так называемый кадровый буфер для отображения видео. Кадровый буфер находится в / dev / graphics / fb0. этот «файл», который является в основном потоком, в который записывает устройство, когда происходят изменения в пользовательском интерфейсе, содержит ~ 2 кадра экрана.

Разрешения на файл кадрового буфера есть rw- rw- ---. Обратите внимание, что последняя "группа" имеет 3 "-". В основном это означает, что если вы не являетесь пользователем owner(который является root), у вас нет разрешения даже читать из этого файла.

Если было установлено приложение системы, которое могло бы делать снимки экрана, у него было бы разрешение на чтение из кадрового буфера. Именно поэтому, как мне кажется, Motorola Xoom может делать скриншоты. На нем установлено приложение, как системное приложение.

Чтение кадрового буфера для разработчика на самом деле просто, если у него есть доступ для его чтения.

Райан Конрад
источник
1
Похоже, Google должен обновить разрешения в r--. Это может создать угрозу безопасности, если какое-либо приложение может шпионить за вашим экраном, но не будет ли это просто одним из разрешений ( Это приложение может контролировать ваш экран ), которое вы должны принять перед установкой? Либо это, либо Google должен добавить встроенный снимок экрана во всплывающем меню, тогда никто другой не получит к нему доступ. Последнее может быть очень кстати, я имею в виду, что они только что добавили print-preview в Chrome.
Джей Ди Айзекс
3
Я думаю, что мода o + r была бы проблемой безопасности, если бы любое рыночное приложение могло читать экран.
kzh
Я думаю, что это зависит. ОС Windows не запрещает приложениям снимать экран. До сих пор мы слышали какие-либо проблемы безопасности, вызванные снимком экрана?
Чеок Ян Ченг
Не нужно делать скриншоты в Windows, есть гораздо более простые способы получить данные с компьютера Windows. Мобильный телефон, я думаю, является более серьезной проблемой. Просто подумайте о приложениях, таких как Square, которые обрабатывают кредитные карты. Если бы я написал сервис, который прослушивал, когда карта была украдена, я мог бы сделать снимок экрана и получить информацию, такую ​​как номер кредитной карты, имя и т. Д.
Райан Конрад
7

Из-за того, что Android уделяет особое внимание отделению всех приложений от данных друг друга, для предотвращения кражи или изменения данных в приложениях, которым вы доверяете, они не могут позволить приложению делать снимки экрана других приложений.

Подумайте о том, сколько ваших приложений могут делать такие вещи, как оптическое распознавание символов для преобразования изображений в текст. Я могу вспомнить, по крайней мере, четыре приложения на моем телефоне, которые могут это сделать, яркий пример - названия книг Google Goggles OCRing, а также распознавание текста, а затем перевод блоков текста на иностранные языки. Теперь подумайте о том, сколько ваших приложений выводят текст на экран, который вы не хотите видеть ненадежным приложением, у меня на телефоне есть приложение базы данных паролей с зашифрованной базой данных моих паролей для различных систем, которое может подождать вредоносная заставка пока приложение для этого пароля не запустится, сделайте снимок экрана с данными для входа в систему, затем распечатайте их и отправьте. Это также может сделать то же самое для всего в вашем списке контактов, даже если вы не даете разрешение приложения для вашей базы данных контактов или истории браузера, или логи чата и тд. Это только один из способов злоупотребления доступом к вашему экрану.

Вот почему для того, чтобы скриншоты были универсальными, они должны быть в ОС (которой вы уже доверяете со всеми своими данными). Вот почему на телефонах со встроенной функцией снимка экрана он был добавлен как часть системы, а не как отдельное приложение.

Если вы рутируете свой телефон и позволяете приложению делать скриншоты, то вы фактически заявляете, что неявно доверяете этому приложению возможность делать все, что может делать система, включая доступ к другим приложениям и их данным и вмешательство в них, а также полностью доверяю не злоупотреблять этим доступом. Это не то, что Android когда-либо разрешит делать, кроме System / OS.

GAThrawn
источник
6

Краткий ответ: потому что 1) компьютеры сложны и 2) функциональность скриншотов на самом деле не очень проста (для программиста, а не для пользователя).

Другими словами, чтобы сделать снимок экрана, требуется, чтобы процесс снятия снимков был достаточно глубоко подключен к внутренним компонентам ОС, немного поработал с ними и снова отцепился. Поскольку Android пытается использовать встроенную модель безопасности (в отличие от «запоздалой мысли» в Windows), снимок экрана снимает несколько барьеров безопасности. Это можно обойти, но в настоящее время единственным практическим способом (за исключением создания дыр - и потенциальных уязвимостей - в ядре) является использование всемогущей учетной записи root, на которую не распространяются ограничения.

Piskvor
источник
1
Я не знаю много о компьютерных аппаратных работах, но я предполагаю, что графический процессор посылает «изображение» на экран. Разве это изображение не может быть перехвачено и сохранено?
Джей Ди Айзекс
2
@ Джон Айзекс, это то, что в основном происходит с кадровым буфером. см. мой ответ о том, почему он все еще требует root.
Райан Конрад