22 votes

Pourquoi faut-il un téléphone rooté pour faire des captures d'écran sur les anciennes versions d'Android ?

Je me rends compte que pour faire des captures d'écran de mon téléphone, toutes les applications de capture d'écran exigent que je possède un téléphone enraciné. Pourquoi en est-il ainsi ? Pourquoi ne pouvons-nous pas avoir une simple application de capture d'écran pour Android, comme nous l'avons pour Windows ?

2 votes

J'ai toujours trouvé intéressant que l'iPhone mette en œuvre cette fonctionnalité d'emblée, alors qu'il est très difficile de l'activer sur Android.

1 votes

Notez que depuis environ Android 4.0, il est possible de faire une capture d'écran en maintenant les boutons Volume bas+Power ; il s'agit d'une fonctionnalité prête à l'emploi, aucune application n'est nécessaire (noté ici pour la postérité et les moteurs de recherche).

17voto

mercutio Points 5828

La réponse est assez simple, c'est un problème de permissions.

Android utilise ce que l'on appelle un framebuffer pour l'affichage vidéo. Le framebuffer est situé dans /dev/graphics/fb0. Ce "fichier", qui est en fait un flux dans lequel le dispositif écrit lorsque des changements dans l'interface utilisateur se produisent, contient ~2 images de l'affichage de l'écran.

Les permissions sur le fichier framebuffer sont les suivantes rw- rw- --- . Notez que le dernier "groupe" comporte 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 ce fichier.

Si une application installée sur le système pouvait faire des captures d'écran, elle aurait la permission de lire le framebuffer. C'est ainsi, je crois, que le Motorola Xoom est capable de faire des captures d'écran. Il a une application installée sur l'appareil, comme une application système.

La lecture du framebuffer, pour un développeur, est en fait simple, s'il a accès à la lecture.

1 votes

On dirait que Google devrait mettre à jour les permissions en r-- . Cela peut créer un risque de sécurité si n'importe quelle application peut espionner votre écran, mais ne serait-ce pas simplement l'une des permissions ( Cette application peut surveiller votre écran ) que vous devez accepter avant l'installation ? Soit cela, soit Google devrait ajouter une capture d'écran intégrée dans le menu déroulant, de sorte que personne d'autre n'y ait accès. Ce dernier cas peut très bien être le cas, je veux dire qu'ils viennent juste d'ajouter l'aperçu avant impression à Chrome.

3 votes

Je pense que le mod d'o+r serait un problème de sécurité si n'importe quelle application du marché pouvait lire l'écran.

0 votes

Je pense que ça dépend. Le système d'exploitation Windows n'empêche pas les applications de faire des captures d'écran. Jusqu'à présent, avons-nous entendu parler de problèmes de sécurité causés par la capture d'écran ?

7voto

Joe Shaw Points 6386

Étant donné que la sécurité d'Android est axée sur la séparation de toutes les applications des données des autres, afin d'empêcher les applications malveillantes de voler ou de modifier les données des applications auxquelles vous faites confiance, il n'est pas possible d'autoriser une application à faire des captures d'écran d'autres applications.

Pensez à combien de vos applications 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, l'exemple principal est Google Goggles qui fait l'OCR des titres de livres, et aussi l'OCR et ensuite la traduction de blocs de texte dans des langues étrangères. J'ai une application de base de données de mots de passe sur mon téléphone, qui contient une base de données chiffrée de mes mots de passe pour différents systèmes. Une application d'économiseur d'écran malveillante pourrait attendre que l'application de mot de passe soit en cours d'exécution, prendre une photo de l'écran avec les détails de connexion, puis les enregistrer par OCR et les envoyer. Elle pourrait également faire de même pour tout ce qui figure dans votre liste de contacts, même si vous ne lui donnez pas l'autorisation d'accéder à votre base de données de contacts, à l'historique de votre navigateur, aux journaux de discussion, etc. Ce n'est qu'une des façons dont l'application pourrait abuser de l'accès à votre écran.

C'est pourquoi, pour que la capture d'écran soit universelle, elle doit être intégrée au système d'exploitation (auquel vous confiez déjà toutes vos données). C'est pourquoi, sur les téléphones qui intègrent la fonction de capture d'écran, celle-ci a été ajoutée au système et non à une application distincte.

Si vous utilisez votre téléphone et autorisez une application à faire des captures d'écran, vous dites en fait que vous faites implicitement confiance à cette application pour 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 faites totalement confiance pour ne pas abuser de cet accès. Android n'autorisera jamais rien d'autre que le système/OS à faire cela.

6voto

Will Hardy Points 111

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, pour réaliser une capture d'écran, il faut que le processus de capture d'écran s'infiltre profondément dans les composants internes du système d'exploitation, qu'il les manipule pendant un certain temps, puis qu'il se détache à nouveau. Étant donné qu'Android s'efforce d'avoir un modèle de sécurité intégré (par opposition à la "réflexion après coup" vue dans Windows), la prise d'une capture d'écran se heurte à plusieurs barrières de sécurité. Ces puede Il est possible de les contourner, mais le seul moyen pratique actuellement (à moins de créer des trous - et des vulnérabilités potentielles - dans le noyau) est d'utiliser le tout-puissant compte Root, qui n'est pas soumis à ces limitations.

1 votes

Je ne connais pas grand-chose au fonctionnement du matériel informatique, mais je suppose que le GPU envoie une "image" à l'écran. Cette image ne pourrait-elle pas être interceptée et sauvegardée ?

2 votes

@John Isaacks, c'est en gros ce qui se passe avec le framebuffer. voir ma réponse pour savoir pourquoi il faut toujours Root.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X