Por que precisamos de um telefone enraizado para capturar screenshots em versões mais antigas do Android? -- screenshots camp android Relacionado O problema

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


21
vote

problema

português

Eu percebo para capturar capturas de tela do meu telefone, todos os aplicativos de tela exigem que eu tenha um telefone enraizado. Porque isto é assim? Por que não podemos ter um aplicativo simples de captura de tela para Android, assim como temos para Windows?

Inglês Original

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?

  
   
   

Lista de respostas

17
 
vote
vote
Melhor resposta
 

A resposta é bastante simples, é uma questão de permissões.

usa o Android O que é chamado de FrioBuffer para a exibição de vídeo. O FrioBuffer está localizado em / dev / graphics / fb0. Este "arquivo", que é basicamente um fluxo que o dispositivo grava para quando alterações na interface do usuário ocorrem, contém ~ 2 quadros da tela de exibição.

As permissões no arquivo FrutoBuffer são rw- rw- --- . Note que o último "grupo" tem 3 "-". Que basicamente significa que, se você não for o owner (que é root), você não tem permissão até mesmo ler a partir desse arquivo.

Se houver um aplicativo instalado do sistema, isso poderia levar capturas de tela, teria permissão para ler do FrioBuffer. O que, eu acredito, é como o Motorola Xoom é capaz de levar capturas de tela. Ele possui um aplicativo instalado no dispositivo, como aplicativo de sistema.

lendo o quadroBuffer, para um desenvolvedor, é realmente simples, se eles tiverem acesso para lê-lo.

 

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

Devido ao foco de segurança do Android em separar todos os aplicativos dos dados uns dos outros, para evitar que os aplicativos maliciosos roubem ou alterem dados em aplicativos que você confia, eles não podem permitir que um aplicativo tome capturas de tela de outros aplicativos.

Pense em quantos de seus aplicativos são capazes de fazer coisas como OCR para traduzir fotos em texto, eu posso pensar em pelo menos quatro aplicativos no meu telefone que pode fazer isso, o principal exemplo é o Google Goggles OCRING Book Títulos, e também OCRING e traduzindo blocos de texto em línguas estrangeiras. Agora pense em quantos de seus aplicativos colocam texto na tela que você não desejaria um aplicativo não confiável para ver, eu tenho um aplicativo de banco de dados de senha no meu telefone com um banco de dados criptografado de minhas senhas para vários sistemas, um aplicativo de tela maliciosa poderia esperar Até que o aplicativo da senha esteja funcionando, tire uma foto da tela com os detalhes de login nele, então ocorrem e envie-os. Também pode fazer o mesmo para tudo na sua lista de contatos, mesmo se você não der a permissão do aplicativo para o banco de dados de contatos, ou seu histórico do navegador ou logs de bate-papo e assim por diante. Esta é apenas uma maneira de poder abusar de acesso à sua tela.

É por isso que para captura de tela ser universal é necessário estar no sistema operacional (que você já confia com todos os seus dados). É por isso que os telefones que têm a função de tiro de tela embutidos, ele foi adicionado como parte do sistema, não como um aplicativo separado.

Se você fizer seu telefone e permitir que um aplicativo tome capturas de tela, então você está efetivamente dizendo que implicitamente confiar nesse aplicativo para poder fazer tudo o que o sistema pode fazer, incluindo o acesso e interferindo com outros aplicativos e seus dados, E que você confia totalmente nisso para não abusar desse acesso. Isso não é algo que Android jamais permitir qualquer coisa, exceto o sistema / OS para fazer.

 

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

Resposta curta: Porque 1) os computadores são complicados e 2) a funcionalidade da captura de tela não é muito simples (para o programador, não para o usuário).

Em outras palavras, tomar uma captura de tela requer que o processo de captura de tela ganche bem profundamente nos internatos do sistema operacional, mexesse com eles um pouco e solte novamente. Como o Android tenta ter um modelo de segurança embutido (em oposição à "afterthought" aparafusada "visto no Windows), fazendo uma captura de tela em várias barreiras de segurança. Os podem serem contornados, mas a única maneira atualmente prática (falta de criação de buracos - e potenciais vulnerabilidades - no kernel) é usar a conta root toda-poderosa, que não está sujeita às limitações.

 

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.

 
 
   
   

Perguntas relacionadas

4  Como imprimir tela Meu aplicativo no telefone Android? [duplicado]  ( How to print screen my application in android phone ) 
. Esta pergunta já tem respostas aqui : fechado 8 anos atrás . . Duplicado possível: como faz...

4  Como tirar uma foto de tela minhas mensagens de texto?  ( How to take a screen shot of my text messges ) 
Eu sei como tirar screenshots na minha carga droid, mas toda vez que eu vou tirar uma foto de uma mensagem de texto, sempre vai para a página antes e tirar a ...

10  Como capturar captura de tela da página inteira no navegador Android?  ( How to capture screenshot of entire webpage in android browser ) 
Como capturar captura de tela de toda a página inteira no navegador Android como eu posso levar na minha área de trabalho com a ajuda do Addon do Firefox cham...

0  Screenshots geralmente saem corrompido  ( Screenshots often come out corrupted ) 
Eu tenho uma primeira geração moto g (xt1033) com o Android 5.0. Muitas vezes, ao tirar screenshots, fica preso na tela está sendo salvo mensagem - então ...

4  Uma maneira melhor de levar captura de tela na Galaxy S 2.2?  ( A better way to take screenshot in galaxy s 2 2 ) 
No Galaxy S com Froyo instalado, você pode fazer uma captura de tela do seu telefone segurando o botão traseiro e tocando no botão HOME. No entanto, isso envo...

15  Minha tela foi quebrada, como ver no computador o que estou fazendo no meu dispositivo?  ( My screen got broken how to see on the computer what im doing in my device ) 
Minha tela do dispositivo Android foi quebrada e não consigo ver o que estou fazendo. Essa é a única coisa errada com o meu dispositivo, o resto está aparente...

4  Alterar o local de armazenamento padrão das capturas de tela  ( Change default storage location of screenshots ) 
Eu consegui alterar as opções de armazenamento para a câmera (por exemplo, de armazenamento interno para SD externo). No entanto, não tenho ideia de como alte...

6  Como tirar uma foto e enviá-lo via MMS?  ( How to take a screen shot and send it via mms ) 
Posso de alguma forma tirar uma foto de tela de um Google Maps em um easy way e enviá-lo via MMS? desejo HTC em 2.1 (não enraizado) ...

1  Como posso fazer uma captura de tela do menu suspenso da barra de notificação?  ( How can i take a screenshot of the notification bar dropdown ) 
Às vezes recebo uma notificação na barra de notificação, eu puxo para baixo, e então quero fazer uma captura de tela. Eu pressiono o botão liga / desliga para...

4  Como posso dar uma captura de tela em um Kindle Fire HD?  ( How can i take a screenshot on a kindle fire hd ) 
Eu pensei que o ICS, que é a versão do sistema operacional subjacente para um Kindle Fire HD, suportou uma maneira padrão de tirar screenshots segurando o bot...

9  Galaxy S mantém acidentalmente tirando captura de tela  ( Galaxy s keeps accidentally taking screenshot ) 
Galaxy S ON 2.2 Suporta Tirando Screenshots segurando o botão traseiro e tocando no botão HOME simultaneamente. No entanto, encontro meu telefone ocasionalmen...

13  Posso criar minha lenda HTC sem torcer?  ( Can i screenshot my htc legend without rooting it ) 
Eu fui informado é o ser tudo e terminar tudo, mas no momento, quero ver o quão longe posso estender meu dispositivo sem enraizá-lo. Uma coisa que seria boa...

1  "Não é possível gravar o arquivo no cartão SD" ao fazer uma captura de tela  ( Cannot write file in sd card when taking a screenshot ) 
Eu tenho um Optimus Black. Quando tento tirar uma captura de tela, faz um barulho. Então, diz cannot write file in SD card . Como faço para consertar iss...

5  Erro ao iniciar o ddms.bat: "Falha ao obter a versão do ADB: Não é possível executar o programa" adb ": CreateProcess Error = 2, o sistema não pode encontrar o arquivo especificado"  ( Error launching ddms bat failed to get the adb version cannot run program ad ) 
Eu estive seguindo Estas instruções muito detalhadas para Faça uma captura de tela no meu Motorola Flipside . Quando eu chegar ao passo # 10 onde eu logo dd...

154  Como fazer uma captura de tela com um dispositivo Android?  ( How to take a screenshot with an android device ) 
Existe uma maneira de fazer uma captura de tela de um dispositivo Android e salvá-lo como um arquivo de imagem? ...




© 2021 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.