Для чого нам потрібен вкорінений телефон для зйомки скріншотів на старих версіях Android?


21

Я розумію, щоб зробити знімки екрана свого телефону, всі програми знімків екрана вимагають, щоб у мене був вкорінений телефон. Чому це так? Чому ми не можемо мати простий додаток для скріншоту для Android, як у нас для Windows?


2
Мені завжди було цікаво, що iPhone реалізує цю функцію поза коробкою, в той час як це головна справа для включення в Android.
shambleh

1
Зауважте, що приблизно з Android 4.0 можна зробити знімок екрана, утримуючи кнопки зменшення гучності + кнопки живлення; це нестандартний функціонал, додатки не потрібні (зазначено тут для нащадків та пошукових систем)
Piskvor

Відповіді:


17

Відповідь досить проста, це питання дозволу.

Android використовує те, що називається фреймбуфер для відображення відео. Кадр буфер розташований за адресою / dev / graphics / fb0. цей "файл", який в основному є потоком, який записує пристрій, коли відбуваються зміни в інтерфейсі користувача, містить ~ 2 кадри екранного екрану.

Дозволи на файл framebuffer є rw- rw- ---. Зауважте, що остання "група" має 3 "-" s. Це в основному означає, що якщо ви не owner(що є коренем), у вас немає дозволу навіть читати з цього файлу.

Якщо б був встановлений системний додаток, який міг би робити знімки екрана, він мав би дозвіл на читання з фреймбуфера. Я вважаю, що Motorola Xoom може робити знімки екрана. У ньому встановлено додаток, встановлене на пристрої, як системний додаток.

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


1
Схоже, Google має оновити дозволи на r--. Це може створити ризик для безпеки, якщо будь-яка програма може шпигувати на екрані, але чи не це буде лише один із дозволів ( Цей додаток може контролювати ваш екран ), який ви повинні прийняти перед встановленням? Або це, або Google повинні додати вбудований знімок екрана під час вильоту меню, і ніхто більше не отримує доступ до нього. Останнє мені дуже добре, я маю на увазі, що вони зараз додають попередній перегляд друку до Chrome.
JD Isaacks

3
Я думаю, що мода o + r була б проблемою безпеки, якби просто будь-який ринковий додаток міг прочитати екран.
кж

Я думаю, це залежить. ОС Windows не заважає програмам знімати екран. Поки ми чули якісь проблеми із безпекою, викликані знімком екрана?
Cheok Yan Cheng

Не потрібно робити знімки екрана у Windows, є набагато простіші способи отримати дані з машини Windows. Мобільний, я думаю, викликає більшу стурбованість. Подумайте лише про такі додатки, як Square, які обробляють кредитні картки. Якби я написав службу, яку слухав, коли провела картку, я міг би зробити захоплення екрана та витягнути інформацію, наприклад, номер кредитної картки, ім’я тощо.
Райан Конрад,

7

Завдяки безпеці Android, що зосереджується на відокремленні всіх додатків від даних один одного, щоб запобігти крадіжці зловмисних програм або зміни даних у додатках, яким ви довіряєте, вони не можуть дозволити програмі робити знімки екрана інших програм.

Подумайте, скільки ваших додатків здатні робити такі речі, як OCR, щоб перетворити зображення в текст, я можу придумати щонайменше чотири додатки на своєму телефоні, які можуть це зробити. Прекрасним прикладом є назви книг Google Goggles OCRing, а також OCRing, а потім переклад блоків тексту іноземними мовами. Тепер подумайте про те, скільки ваших додатків виставить текст на екран, який ви не хочете бачити ненадійним додатком, у мене на телефоні додаток бази даних паролів із зашифрованою базою даних моїх паролів для різних систем, шкідливий додаток заставки може зачекати поки цей додаток не запущено, сфотографуйте екран із зазначенням даних для входу, а потім OCR і відправте їх. Це також може зробити те ж саме для всього, що у вашому списку контактів, навіть якщо ви не даєте дозволу додатку в базі даних контактів чи історії веб-переглядача, або журнали чату тощо. Це лише один спосіб, який може зловживати доступом до вашого екрана.

Ось чому для того, щоб скріншот був універсальним, він повинен бути в ОС (якій ви вже довіряєте всі свої дані). Ось чому на телефони, які мають вбудовану функцію знімання екрана, додано як частину системи, а не як окремий додаток.

Якщо ви викорінюєте свій телефон і дозволяєте додатку робити знімки екрана, ви фактично говорите про те, що ви невірно довіряєте цьому додатку, щоб мати змогу робити все, що може зробити система, включаючи доступ та втручання в інші додатки та їх дані, і що ви повністю довіряйте їй не зловживати цим доступом Це не те, що Android ніколи не дозволить зробити що-небудь, крім системи / ОС.


6

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

Іншими словами, зробити знімок екрана потрібно, щоб процес скріншотування підключився досить глибоко у внутрішній частині ОС, трохи поплутався з ними та знову зніміть його. Оскільки Android намагається мати вбудовану модель безпеки (на відміну від "зафіксованої заднім числом", що спостерігається в Windows), роблячи знімки екрана на кілька бар'єрів безпеки. Їх можна обійти, але єдиний на даний момент практичний спосіб (за винятком створення дірок - та потенційних вразливих місць - в ядрі) - це використання всемогутнього кореневого акаунта, який не підпадає під обмеження.


1
Я мало знаю про роботи апаратних засобів комп’ютера, але я припускаю, що графічний процесор надсилає "зображення" на екран. Чи не можна було перехопити та зберегти це зображення?
JD Isaacks

2
@John Isaacks, це в основному те, що відбувається з фреймбуфером. дивіться мою відповідь, чому він все ще потребує кореня.
Райан Конрад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.