【问题标题】:How to programmatically detect if any screen recording process/app is running in Android?如何以编程方式检测Android中是否正在运行任何屏幕录制进程/应用程序?
【发布时间】:2017-06-14 12:33:21
【问题描述】:

我不希望用户截取我的应用的屏幕截图或录制屏幕。我在窗口中添加了安全标志。这可以防止用户截取屏幕截图和录制屏幕。

如果屏幕录制开启,我的应用会阻止录制内容,但会录制音频。

在某些根设备上,安全标志可能无法按预期工作。 所以我只想检测是否有任何屏幕录制应用程序/进程在后台运行,以便我可以隐藏敏感数据并防止它被记录。

有什么方法可以检测屏幕录制是否开启?

【问题讨论】:

  • 没有办法,如果你在谈论root。使用 root,用户可以记录不同层上的所有内容,直至 GPU 输出级别。我敢肯定你对此无能为力。
  • 你需要有一个市场上流行和不那么流行的录音应用列表(一定要抓住包名),因为你要比较这些包在Android以来当前运行的过程中不知道什么是录音应用。

标签: java android security screen-recording screen-grab


【解决方案1】:

有什么方法可以检测屏幕录制是否开启?

没有。

所以我只想检测是否有任何屏幕录制应用程序/进程在后台运行,以便我可以隐藏敏感数据并防止其被录制。

由于屏幕录制不需要特定于录制的应用程序或进程(例如,adb shell screenrecord),并且由于您无法了解使用媒体投影 API 的特定应用程序或进程,因此这似乎不切实际。而且,在现代版本的 Android 上,无论如何,您无法知道其他进程正在运行。此外,没有什么可以阻止用户将另一个摄像头指向设备屏幕并以这种方式记录其内容。

我不希望用户截取我的应用的屏幕截图或录制屏幕

那就不要写应用了。 FLAG_SECURE 背后的理念是帮助保护用户免受第三方侵害,而不是保护开发人员免受用户侵害。

【讨论】:

  • 我对 FLAG_SECURE 没问题,但它仍然会录制音频。他们也应该防止这种情况发生
  • 虽然关于答案的一切都很好,但你在 FLAG_SECURE 背后的想法似乎是错误的。在许多用例中,开发人员可能需要保护用户的数据,例如只为付费用户提供数据时,不应通过屏幕截图在用户之间共享
  • @Abbas: FLAG_SECURE 并非设计为 DRM 解决方案。
【解决方案2】:

这里的答案实际上只是一般的安全性。一旦数据流向某人的设备,那么您必须假设他们可以完全、不受限制地访问它。从某种意义上说,其他一切都只是混淆。充其量只是让它变得更加困难。即使设备的软件提供了一些保护,用户也可以物理访问设备并且可以对其进行 root。在某些时候,必须对数据进行未加密和去混淆处理,以便可以将其显示给用户,并且恶意用户可以进行 MITM。如果您想要更好的安全性,则需要由设备通过硬件提供。这是最初将电影流式传输到移动设备的一个大问题。设备需要一个特殊的硬件加密通道,该通道每秒可以解密到非常多的数据量,如果有人试图 MITM 将未加密的数据传输到屏幕上,则很难将其写回磁盘。

现在上面的内容只是为了表明,当数据进入用户的设备时,无法保证您可以控制数据。相反,你应该退后一步,问问你想要完成什么?你想阻止什么类型的行为?如果少数精通技术的用户能够解决您的保护问题,这可以吗?还是有什么大不了的?什么是可接受的数据“泄漏”率。这实际上取决于数据的敏感程度以及您告诉用户您拥有的保证类型。这方面100%是最关键的部分。如果您告诉用户他们发送的数据保证是短暂的,那么这是不可能的。试图建立它并修补所有漏洞并玩重击鼹鼠游戏是一场失败的战斗。获胜的唯一方法就是不玩。

【讨论】:

    【解决方案3】:

    正如@CommonsWare 所说,没有办法

    了解正在使用 媒体投影 API,这似乎不切实际。

    但是你可以像这样使用FLAG_SECURE

    getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); 
    

    docs here 中所述。

    【讨论】:

    • 这大部分效果都很好,但我得到的报告说,一些品牌,例如华为,似乎忽略了这一点,用户仍然可以录制。我需要找到解决方案,因为我的应用程序用于显示票证,并且一些用户通过分享这些票证的屏幕记录来作弊。到目前为止,我还没有找到可行的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多