为什么我们需要一个扎根的手机来捕获旧版Android的屏幕截图? -- screenshots 领域 android 相关 的问题

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


21
vote

问题

中文

我意识到才能捕获手机的屏幕截图,所有屏幕截图应用程序都需要我有一个扎根的手机。为什么这么好?为什么我们不能为Android有一个简单的屏幕截图应用程序,就像我们为Windows一样?

英文原文

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?

  
   
   

回答列表

17
 
vote
vote
最佳答案
 

答案相当简单,这是一个权限问题。

android使用所谓的 framebuffer 用于视频显示。 FrameBuffer位于/ dev / graphics / fb0。这个"文件" 基本上是一个流的流,即设备写入用户界面发生的更改时,包含屏幕显示的〜2帧。

FrameBuffer文件的权限是 rw- rw- --- 。请注意,最后一个"组" 有3" - " 。这基本上意味着如果您不是 owner (它是root),您无权甚至从该文件读取。

如果有一个系统安装的应用程序,可以拍摄屏幕截图,它将有权从帧缓冲读取。我相信,这是摩托罗拉Xoom如何能够拍摄截图。它有一个安装在设备上的应用程序,作为系统应用程序。

读取帧缓冲器,对于开发人员,实际上是简单的,如果他们有权阅读它。

 

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

由于Android的安全关注将所有应用程序分离在彼此的数据中,以防止恶意应用程序在您信任的应用中窃取或更改数据,他们无法允许应用程序拍摄其他应用的屏幕截图。

想想你的许多应用程序能够做像OCR这样的事情要将图片翻译成文本,我可以想到我的手机上的至少四个应用程序,可以这样做,这个局部榜样是谷歌护目镜occring书籍标题,也是Occring然后用外语翻译文本块。现在想想你的应用程序如何在屏幕上放在屏幕上,你不想要一个不值得信任的应用程序,我的手机上有一个密码数据库应用程序,带有我的密码的加密数据库,对各种系统,一个恶意屏​​保应用程序可以等待在该密码应用程序运行之前,拍摄屏幕的图片,其中包含登录详细信息,然后OCR向下发送并关闭。即使您没有向联系人数据库或浏览器历史记录或聊天日志等,也可以对联系人列表中的所有内容进行同样的操作。这只是它可以滥用访问屏幕的一种方式。

这就是为什么屏幕上的屏幕屏蔽它需要在操作系统(您已经信任所有数据)。这就是为什么在拥有屏幕截图函数内置的手机上的原因是系统的一部分添加,而不是作为单独的应用程序。

如果您root手机并允许应用程序拍摄屏幕截图,那么您有效地说,您隐含地信任该应用程序能够执行系统可以做的所有内容,包括访问和干扰其他应用和数据,并且你完全相信它不滥用这种访问。除了系统/操作系统之外,这不是Android才能允许任何东西。

 

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

简短答案:因为1)计算机复杂,2)截图功能实际上不是很简单(对于程序员,而不是用户)。

换句话说,拍摄屏幕截图需要屏幕截图的过程来挂钩漂亮进入操作系统的内部,并弄乱了一下,再次弄乱了。由于Android尝试拥有内置的安全模型(而不是在Windows中看到的"螺栓上门" ),以屏幕截图进行几个安全障碍。这些 CAN 被绕过,但目前唯一的实用方式(短缺创造漏洞 - 以及内核中的潜在漏洞)是使用全强大的root帐户,这不受限制。
 

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.

 
 
   
   

相关问题

0  屏幕截图经常出现损坏  ( Screenshots often come out corrupted ) 
我有一个带有Android 5.0的第一代Moto G(XT1033)。 经常在截图时,它被困在屏幕截图时被保存消息 - 然后我必须强行关闭系统ui 进程,如果我希望它会消失。 和最终文件已损坏(PNG文件在PC上不打开,或者对于更容易破坏文件的图像查看器,除了图像的一小部分之外,它将是Black)。例如: ...

1  如何拍摄通知栏下拉列表的屏幕截图?  ( How can i take a screenshot of the notification bar dropdown ) 
有时我在通知栏中获得通知,我将其拉下来,然后我想拍摄截图。我按电源按钮进行屏幕截图,将显示一个菜单,要关闭,重新启动或制作屏幕截图。出现此弹出菜单时,下拉菜单会消失。我尝试了另一个屏幕截图应用程序,但这也不工作。 如何拍摄通知下拉菜单的屏幕截图? ...

154  如何使用Android设备拍摄屏幕截图?  ( How to take a screenshot with an android device ) 
有没有办法拍摄Android设备的屏幕截图并将其另存为图像文件? ...

6  如何拍摄屏幕拍摄并通过MMS发送它?  ( How to take a screen shot and send it via mms ) 
我可以以某种方式拍摄 easy way 中的谷歌地图的屏幕拍摄,然后通过彩信发送它? HTC欲望2.1(未植根) ...

9  Galaxy S不小心拍摄截图  ( Galaxy s keeps accidentally taking screenshot ) 
Galaxy S ON 2.2支持通过握住后按钮并同时敲击主按钮来屏幕截图。但是,当我只拍下背部或唯一的家庭按钮(我做了很多)时,我会偶尔这样做的手机。 这是不方便的,但我不介意太多拍摄截图,但对我来说更大的问题问题就是它是一个相机的声音。这使得它听起来像你拍了一张照片,并且在公共场所里,它可以在一些尴尬的情况下...

4  我怎样才能在Kindle Fire HD上拍摄屏幕截图?  ( How can i take a screenshot on a kindle fire hd ) 
我认为ICS是Kindle Fire HD的底层OS版本,支持通过按住电源按钮+音量键键屏幕截图的标准方法。这对我不起作用。有人可以确认这是否确实如此,或者我是否只是在没有同时按住按钮的慢? ...

15  我的屏幕被打破了,如何在电脑上看到我在我的设备中做什么?  ( My screen got broken how to see on the computer what im doing in my device ) 
我的Android设备屏幕被打破了,我看不到我正在做的事情。这是我的设备唯一错误的事情,其余的休息显然是正常工作。 有没有办法将我的设备屏幕发送到我的电脑? 我不想盲目地工作! ...

1  拍摄截图时,“无法在SD卡中写入文件”  ( Cannot write file in sd card when taking a screenshot ) 
我有一个擎天柱。 当我尝试拍摄截图时,它会产生噪音。然后,它说 cannot write file in SD card 。 如何修复它? ...

4  更改屏幕截图的默认存储位置  ( Change default storage location of screenshots ) 
我已经能够更改相机的存储选项(例如,从内部存储到外部SD)。但是,我不知道如何更改该设置,甚至控制屏幕截图的格式。将"屏幕截图" 文件夹移动到外部存储器手动无效。 我有果冻豆4.1.2。 ...

4  如何拍摄屏幕截图我的短信?  ( How to take a screen shot of my text messges ) 
我知道如何在我的机器人充电上拍摄屏幕截图,但每次我都去拍摄文本消息的照片,它始终进入页面并拍摄图片。这是非常令人沮丧的。如果您知道任何方法可以帮助请回复。 ...

4  如何在Android手机中打印屏幕我的应用程序? [复制]  ( How to print screen my application in android phone ) 
这个问题已经在这里有答案: 关闭 8年前。 可能的重复: <a href="https://android.stackexchange.com/questions/1759/how-to-tak...

4  在Galaxy S 2.2中拍摄截图的更好方法?  ( A better way to take screenshot in galaxy s 2 2 ) 
在Galaxy S froyo安装后,您可以通过握住后按钮并敲击主按钮来拍摄手机屏幕截图。但是,当您按下或按住后按钮时,这涉及返回键,并且很多应用程序关闭。 有没有办法绕过这个?这是一个很好的补充,但是如果您唯一可以拍摄的是主菜单,桌面以及在保存后按钮时,那么截图的截图和一些很少的应用程序都没有意义。 ...

13  我可以屏蔽我的htc传奇吗?  ( Can i screenshot my htc legend without rooting it ) 
我被告知生根就是全部和结束所有,但目前我想看到我可以在不扎根的情况下扩展我的设备。 是良好的一件事是截图功能,但我似乎无法在市场上找到一个没有 **植根手机的市场上的应用程序。 是否有任何方法可以在没有扎根手机的情况下获取屏幕截图功能?默认情况下,此功能的原因是什么。 ifail可以用2个按钮推动,为什么不是andr...

10  如何在Android浏览器中捕获整个网页的屏幕截图?  ( How to capture screenshot of entire webpage in android browser ) 
如何在android浏览器中捕获整个网页的屏幕截图,如我可以在我的桌面上用firefox插件的帮助,名为"fireheshot" ? ...

5  启动ddms.bat错误:“无法获取adb版本:无法运行程序”adb“:createProcess错误= 2,系统找不到指定的文件”  ( Error launching ddms bat failed to get the adb version cannot run program ad ) 
我一直在关注这些非常详细的说明在我的摩托罗拉襟翼上拍摄截图。当我到达步骤#10时,我启动 ddms.bat 我收到此错误,我的手机没有显示: c: program files(x86) android android-sdk-windows tools&gt; ddms.bat 12:09:01 E...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.