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?

english

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

3  Capturas de tela em branco no tablet Android  ( Blank screenshots on android tablet ) 
Eu uso ddms para tirar capturas de tela do meu telefone e funciona bem, mas quando eu tento fazer o mesmo com o meu tablet, consigo uma imagem preta. O tele...

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...

3  Como desativar a flag_secure sem root?  ( How to disable flag secure without root ) 
Acabei de perceber a única maneira de ignorar a segurança da captura de tela em determinados aplicativos é desativar este FLAG_SECURE , que como eu vejo pode...

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...

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...

0  Excluindo fotos escondidas  ( Deleting hidden pictures ) 
Quando baixei minhas fotos do meu Samsung Galaxy S3 para a minha área de trabalho, centenas de fotos de fotos de tela. Estes são aqueles pop ups irritantes qu...

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...

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...

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? ...

21  Por que precisamos de um telefone enraizado para capturar screenshots em versões mais antigas do Android?  ( Why do we need a rooted phone to capture screenshots on older versions of androi ) 
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 qu...




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


Licensed under cc by-sa 3.0 with attribution required.