Почему нам нужен укорененный телефон для захвата скриншотов на более старых версиях Android? -- screenshots пол android Связанный проблема

Why do we need a rooted phone to capture screenshots on older versions of Android?


21
vote

проблема

русский

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

Английский оригинал

I realize in order to capture screenshots of my phone, all screenshot applications require I have a rooted phone. Why is this so? Why can't we have a simple screenshot application for Android, just like we have for Windows?

  
   
   

Список ответов

17
 
vote
vote
Лучший ответ
 

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

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

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

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

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

 

The answer is rather simple, it's a permissions issue.

Android uses what is called a framebuffer for the video display. The framebuffer is located at /dev/graphics/fb0. this "file", which is basically a stream that the device writes to when changes in the user interface occur, contains ~2 frames of the screen display.

The permissions on the framebuffer file is rw- rw- ---. Note that the last "group" has 3 "-"'s. That basically means that if you are not the owner (which is root) you do not have permission to even read from that file.

If there was a system installed application, that could take screenshots, it would have permission to read from the framebuffer. Which, I believe, is how the Motorola Xoom is able to take screenshots. It has an application installed on the device, as a system app.

Reading the framebuffer, for a developer, is actually simple, if they have access to read it.

 
 
       
       
7
 
vote

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

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

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

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

 

Due to Android's security focus on separating all apps from each others' data, to prevent malicious apps from stealing or altering data in apps that you trust, they can't allow an app to take screenshots of other apps.

Think about how many of your apps are able to do things like OCR to translate pictures into text, I can think of at least four apps on my phone that can do this, prime example is Google Goggles OCRing book titles, and also OCRing and then translating blocks of text in foreign languages. Now think about how many of your apps put text on screen that you wouldn't want an untrustworthy app to see, I have a password database app on my phone with an encrypted database of my passwords for various systems, a malicious screensaver app could wait until that password app's running, take a picture of the screen with the login details on it, then OCR them and send them off. It could also do the same for everything in your Contacts list, even if you don't give the app permission to your Contacts database, or your browser history, or chat logs and so on. This is only one way that it could abuse access to your screen.

This is why for screenshotting to be universal it needs to be in the OS (which you already trust with all your data). This is why on phones that do have the screen shot function built-in it's been added as part of the system, not as a separate app.

If you root your phone and allow an app to take screenshots, then you are effectively saying that you implicitly trust that app to be able to do everything that the system can do, including accessing and interfering with other apps and their data, and that you totally trust it not to abuse that access. That's not something that Android's ever going to allow anything except the System/OS to do.

 
 
6
 
vote

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

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

 

Short answer: Because 1) computers are Complicated and 2) the screenshot functionality is actually not very simple (for the programmer, not for the user).

In other words, taking a screenshot requires the screenshotting process to hook pretty deep into the OS internals, mess with them for a bit, and unhook again. Since Android tries to have a built-in security model (as opposed to the "bolted-on afterthought" seen in Windows), taking a screenshot trips on several security barriers. Those can be bypassed, but the only currently practical way (short of creating holes - and potential vulnerabilities - in the kernel) is to use the all-powerful root account, which is not subject to the limitations.

 
 
   
   

Связанный проблема

4  Как я могу взять скриншот на Kindle Fire HD?  ( How can i take a screenshot on a kindle fire hd ) 
Я думал, что ICS, которая является базовой версией ОС для Kindle Fire HD, поддерживала стандартный способ принимать скриншоты, удерживая кнопку питания + клав...

3  Пустые скриншоты на планшете Android  ( Blank screenshots on android tablet ) 
Я использую <код> ddms , чтобы взять скриншоты моего телефона, и он работает нормально, но когда я пытаюсь сделать то же самое с моим таблеткой, я просто полу...

3  Как отключить флаг_секурию без рута?  ( How to disable flag secure without root ) 
Я только что понял, что единственный способ обойти скриншот безопасности на определенные приложения - отключить этот <код> FLAG_SECURE , который, как я вижу, ...

4  Изменить место хранения по умолчанию Скриншоты  ( Change default storage location of screenshots ) 
Я смог изменить параметры хранения для камеры (например, от внутреннего хранилища на внешний SD). Тем не менее, я понятия не имею, как изменить эту настройку ...

21  Почему нам нужен укорененный телефон для захвата скриншотов на более старых версиях Android?  ( Why do we need a rooted phone to capture screenshots on older versions of androi ) 
Я осознаю, чтобы захватить скриншоты моего телефона, все приложения Screenshot требуют, чтобы у меня был укорененный телефон. Почему это так? Почему мы не мож...

13  Могу ли я скриншот моей HTC легенды, не болея его?  ( Can i screenshot my htc legend without rooting it ) 
Мне сказали, что roying - это все и конец все, но в данный момент я хочу посмотреть, как далеко я могу расширить свое устройство, не болея его. Одна вещь, к...

154  Как сделать скриншот с устройством Android?  ( How to take a screenshot with an android device ) 
Есть ли способ сделать скриншот устройства Android и сохранить его как файл изображения? ...

0  Удаление скрытых картинок  ( Deleting hidden pictures ) 
Когда я скачиваю свои фотографии из My Samsung Galaxy S3 на мой рабочий стол, сотни экранов выстрел загрузки фотографий. Это эти раздражающие всплывающие окна...

1  Как я могу сделать скриншот раскрывающегося спина уведомления?  ( How can i take a screenshot of the notification bar dropdown ) 
Иногда я получаю уведомление в баре уведомлений, я притянул его, а потом я хочу сделать скриншот. Я нажимаю кнопку питания, чтобы сделать скриншот, меню отобр...

4  Лучший способ взять скриншот в галактике S 2.2?  ( A better way to take screenshot in galaxy s 2 2 ) 
В Galaxy S S Froyo установлена, вы можете сделать скриншот вашего телефона, удерживая кнопку «Назад» и нажав кнопку «Домой». Тем не менее, это включает в себя...