Pourquoi avons-nous besoin d'un téléphone rooté pour capturer des captures d'écran sur les anciennes versions d'Android?

21

Je me rends compte que pour capturer des captures d'écran de mon téléphone, toutes les applications de capture d'écran nécessitent que je dispose d'un téléphone rooté. Pourquoi cela est-il ainsi? Pourquoi ne pouvons-nous pas avoir une application de capture d'écran simple pour Android, tout comme nous l'avons pour Windows?

Cheok Yan Cheng
la source
2
J'ai toujours trouvé intéressant que l'iPhone implémente cette fonctionnalité hors de la boîte alors que c'est une affaire majeure à activer sur Android.
shambleh
1
Notez que depuis approximativement Android 4.0, il est possible de faire une capture d'écran en maintenant les boutons Volume Down + Power; il s'agit d'une fonctionnalité
prête à l'emploi

Réponses:

17

La réponse est plutôt simple, c'est un problème d'autorisations.

Android utilise ce qu'on appelle un framebuffer pour l'affichage vidéo. Le framebuffer est situé dans / dev / graphics / fb0. ce "fichier", qui est essentiellement un flux sur lequel le périphérique écrit lorsque des modifications de l'interface utilisateur se produisent, contient environ 2 images de l'écran.

Les autorisations sur le fichier framebuffer sont rw- rw- ---. Notez que le dernier "groupe" a 3 "-". Cela signifie essentiellement que si vous n'êtes pas le owner(qui est root), vous n'avez même pas la permission de lire à partir de ce fichier.

S'il y avait une application installée sur le système, qui pourrait prendre des captures d'écran, elle aurait la permission de lire à partir du framebuffer. C'est, je crois, comment le Motorola Xoom est capable de prendre des captures d'écran. Il a une application installée sur l'appareil, en tant qu'application système.

La lecture du framebuffer, pour un développeur, est en fait simple, s'ils ont accès à le lire.

Ryan Conrad
la source
1
Il semble que Google devrait mettre à jour les autorisations dans r--. Cela peut créer un risque pour la sécurité si une application peut espionner votre écran, mais ne serait-ce pas simplement l'une des autorisations ( cette application peut surveiller votre écran ) que vous devez accepter avant d'installer? Soit cela, soit Google devrait ajouter une capture d'écran intégrée dans le menu déroulant, puis personne d'autre n'y aura accès. Ce dernier peut très bien être le cas, je veux dire qu'ils viennent tout juste d'ajouter l'aperçu avant impression à Chrome.
JD Isaacks
3
Je pense que le mod de o + r serait un problème de sécurité si n'importe quelle application du marché pouvait lire l'écran.
kzh
Je pense que cela dépend. Le système d'exploitation Windows n'empêche pas les applications de prendre sa capture d'écran. Jusqu'à présent, avons-nous entendu des problèmes de sécurité causés par une capture d'écran?
Cheok Yan Cheng
Vous n'avez pas besoin de prendre des captures d'écran dans Windows, il existe des moyens beaucoup plus faciles d'extraire des données d'une machine Windows. Le mobile, je pense, est une préoccupation plus importante. Pensez à des applications comme Square, qui traite les cartes de crédit. Si j'écrivais un service qui écoutait lorsque la carte a été glissée, je pourrais éventuellement faire une capture d'écran et extraire des informations comme le numéro de carte de crédit, le nom, etc.
Ryan Conrad
7

En raison de la sécurité d'Android, qui consiste à séparer toutes les applications des données des autres, pour empêcher les applications malveillantes de voler ou de modifier des données dans des applications auxquelles vous faites confiance, elles ne peuvent pas autoriser une application à prendre des captures d'écran d'autres applications.

Pensez au nombre de vos applications qui sont capables de faire des choses comme l'OCR pour traduire des images en texte.Je peux penser à au moins quatre applications sur mon téléphone qui peuvent le faire, par exemple les titres de livre OCRing de Google Goggles, et également OCRing, puis OCRing, puis traduire des blocs de texte dans des langues étrangères. Pensez maintenant au nombre de vos applications qui mettent du texte à l'écran que vous ne voudriez pas voir une application non fiable, j'ai une application de base de données de mot de passe sur mon téléphone avec une base de données cryptée de mes mots de passe pour divers systèmes, une application d'économiseur d'écran malveillante pourrait attendre jusqu'à ce que cette application de mot de passe soit exécutée, prenez une photo de l'écran avec les informations de connexion, puis effectuez une OCR et envoyez-les. Il pourrait également en faire de même pour tout ce qui se trouve dans votre liste de contacts, même si vous ne donnez pas l'autorisation à votre base de données de contacts ou à l'historique de votre navigateur, ou les journaux de discussion et ainsi de suite. Ce n'est qu'une façon dont il pourrait abuser de l'accès à votre écran.

C'est pourquoi, pour que la capture d'écran soit universelle, elle doit être dans le système d'exploitation (auquel vous faites déjà confiance avec toutes vos données). C'est pourquoi sur les téléphones qui ont la fonction de capture d'écran intégrée, elle a été ajoutée au système, pas en tant qu'application distincte.

Si vous rootez votre téléphone et autorisez une application à prendre des captures d'écran, vous dites en fait que vous faites implicitement confiance à cette application pour pouvoir faire tout ce que le système peut faire, y compris accéder et interférer avec d'autres applications et leurs données, et que vous lui faire totalement confiance pour ne pas abuser de cet accès. Ce n'est jamais quelque chose qu'Android va autoriser quoi que ce soit, sauf le système / OS.

GAThrawn
la source
6

Réponse courte: Parce que 1) les ordinateurs sont compliqués et 2) la fonctionnalité de capture d'écran n'est en fait pas très simple (pour le programmeur, pas pour l'utilisateur).

En d'autres termes, prendre une capture d'écran nécessite que le processus de capture d'écran s'intègre assez profondément dans les composants internes du système d'exploitation, les dérange un peu et se décroche à nouveau. Étant donné qu'Android essaie d'avoir un modèle de sécurité intégré (par opposition à la "réflexion après coup" sur Windows), la capture d'écran se déplace sur plusieurs barrières de sécurité. Ceux-ci peuvent être contournés, mais le seul moyen actuellement pratique (à moins de créer des trous - et des vulnérabilités potentielles - dans le noyau) est d'utiliser le compte root tout-puissant, qui n'est pas soumis aux limitations.

Piskvor
la source
1
Je ne sais pas grand-chose sur le matériel informatique, mais je suppose que le GPU envoie une "image" à l'écran. Cette image ne pouvait-elle pas être interceptée et enregistrée?
JD Isaacks
2
@John Isaacks, c'est essentiellement ce qui se passe avec le framebuffer. voir ma réponse pour savoir pourquoi il nécessite toujours root.
Ryan Conrad