检测用户何时在 Unity 中截取屏幕截图
Detect when user takes a screenshot in Unity
所以在我制作的这种迷宫类游戏中,我会向玩家展示迷宫 30 秒。
我不想要的是玩家对迷宫进行截图。
我想做一些类似 Snapchat 或 Instagram 的东西,它如何检测你截取 snap/story 的屏幕截图。
我正在使用 C#。它还可以防止用户截取屏幕截图。我不介意。
是否有可能的方法来检测用户何时截取屏幕截图或在 Unity 中阻止它?
不,您无法可靠地检测到这一点。他们还可以用数码相机拍照。此外,有无数种创建屏幕截图的方法,os 没有 "callback" 来通知应用程序。您可以尝试检测 "print screen" 键,但正如我所说,还有其他屏幕截图/屏幕录制工具可以使用任何热键或根本不使用热键。我从来没有用过 Snapchat,但它似乎也不安全。
甚至还有具有冻结模式以保留当前图像的监视器和视频投影仪。您还可以在虚拟机中 运行 您的浏览器。在那里,您实际上可以冻结整个虚拟 PC 或从虚拟屏幕截取屏幕截图,而 VM 内的应用程序 运行ning 甚至无法检测或阻止这种情况。
我曾经不得不做类似的事情。如果你只是想做 snapchat 所做的事情,那么它就可以完成,但请记住,只要应用程序 运行 在任何人的设备上而不是你的服务器上,它就可以 de-compiled,再次修改和编译,所以可以绕过此屏幕截图检测。
首先你需要知道苹果的规定:
2.5.9 Apps that alter or disable the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, or other native
user interface elements or behaviors will be rejected.
所以,改变截屏时发生的事情的想法被淘汰了。
你要做的就是开始游戏,当你向玩家展示迷宫 30 秒时执行以下操作:
上 iOS:
持续检查玩家是否在the-same次按下电源和主页按钮。如果发生这种情况,请重新开始游戏并再次向玩家展示迷宫 30 秒。一遍又一遍地做,直到玩家停止这样做。你甚至可以 断开连接 或 禁止 如果你检测到电源 + 主页按钮按下。
上 Android:
持续检查玩家是否在 the-same 次按下 电源 和 音量降低 按钮。执行上述 the-same 操作。
你不能只用C#来做。您必须为 iOS 和 Android 设备使用 make 插件。插件应该使用 Java 来检测 android 和 Object-C 来检测 iOS。这是因为所需的 API 在 C# 中不可用。然后,您可以从 C# 调用 Java 和 Objective-C 函数。
要进行的其他改进:
检查或外接显示设备并在您使用时禁用它们
向玩家展示迷宫 30 秒。启用它们
在这段时间里。
当您如上所述检测到屏幕截图按钮按下时,
你也赶紧截图吧。循环浏览播放器图片库中的图像并加载当天拍摄的所有图像。
将其与您刚刚截取的屏幕截图进行比较,看看它们是否匹配。
如果他们这样做了,那么您现在可以非常确定该玩家正试图作弊。
采取措施,例如禁止玩家、重新开始游戏甚至
通过将他们的屏幕截图发送给其他玩家来控制玩家。也可以作为用户在被封禁后投诉时作弊的证明。
最后,您甚至可以使用 OpenCV 进行更深入的研究。当你在
向玩家展示迷宫 30 秒,启动前置摄像头
设备并使用 OpenCV 连续检查是否有其他对象
而不是玩家的头在镜头前。如果是这样,那么
玩家正在尝试使用另一台设备截取屏幕截图。拿
立即行动。你可以用机器语言来训练它。
能走多远,取决于你愿意花多少时间,以及你对玩家在线作弊的关心程度。唯一要担心的是玩家 de-compiling 游戏并删除了这些功能,但值得实施。
My Android phone takes screenshots differently. I swipe down from the
top of the screen and select the "Capture" option.
在 Android 上没有什么总是 the-same。这在某些较旧或不同的 Android 设备上有所不同。 您可以检测屏幕上的滑动模式。最好的方法是建立一个配置文件来处理来自不同制造商的每个 Android 设备。
对于那些发表评论的人来说,这是可以做到的。你必须这样做,特别是如果它是多人游戏。仅仅因为游戏可以被黑客入侵并不意味着程序员不应该实施基本的黑客防御机制。应实施基本的黑客攻击预防机制,然后根据玩家的反馈进行改进。
所以在我制作的这种迷宫类游戏中,我会向玩家展示迷宫 30 秒。
我不想要的是玩家对迷宫进行截图。
我想做一些类似 Snapchat 或 Instagram 的东西,它如何检测你截取 snap/story 的屏幕截图。
我正在使用 C#。它还可以防止用户截取屏幕截图。我不介意。
是否有可能的方法来检测用户何时截取屏幕截图或在 Unity 中阻止它?
不,您无法可靠地检测到这一点。他们还可以用数码相机拍照。此外,有无数种创建屏幕截图的方法,os 没有 "callback" 来通知应用程序。您可以尝试检测 "print screen" 键,但正如我所说,还有其他屏幕截图/屏幕录制工具可以使用任何热键或根本不使用热键。我从来没有用过 Snapchat,但它似乎也不安全。
甚至还有具有冻结模式以保留当前图像的监视器和视频投影仪。您还可以在虚拟机中 运行 您的浏览器。在那里,您实际上可以冻结整个虚拟 PC 或从虚拟屏幕截取屏幕截图,而 VM 内的应用程序 运行ning 甚至无法检测或阻止这种情况。
我曾经不得不做类似的事情。如果你只是想做 snapchat 所做的事情,那么它就可以完成,但请记住,只要应用程序 运行 在任何人的设备上而不是你的服务器上,它就可以 de-compiled,再次修改和编译,所以可以绕过此屏幕截图检测。
首先你需要知道苹果的规定:
2.5.9 Apps that alter or disable the functions of standard switches, such as the Volume Up/Down and Ring/Silent switches, or other native user interface elements or behaviors will be rejected.
所以,改变截屏时发生的事情的想法被淘汰了。
你要做的就是开始游戏,当你向玩家展示迷宫 30 秒时执行以下操作:
上 iOS:
持续检查玩家是否在the-same次按下电源和主页按钮。如果发生这种情况,请重新开始游戏并再次向玩家展示迷宫 30 秒。一遍又一遍地做,直到玩家停止这样做。你甚至可以 断开连接 或 禁止 如果你检测到电源 + 主页按钮按下。
上 Android:
持续检查玩家是否在 the-same 次按下 电源 和 音量降低 按钮。执行上述 the-same 操作。
你不能只用C#来做。您必须为 iOS 和 Android 设备使用 make 插件。插件应该使用 Java 来检测 android 和 Object-C 来检测 iOS。这是因为所需的 API 在 C# 中不可用。然后,您可以从 C# 调用 Java 和 Objective-C 函数。
要进行的其他改进:
检查或外接显示设备并在您使用时禁用它们
向玩家展示迷宫 30 秒。启用它们
在这段时间里。当您如上所述检测到屏幕截图按钮按下时, 你也赶紧截图吧。循环浏览播放器图片库中的图像并加载当天拍摄的所有图像。 将其与您刚刚截取的屏幕截图进行比较,看看它们是否匹配。 如果他们这样做了,那么您现在可以非常确定该玩家正试图作弊。 采取措施,例如禁止玩家、重新开始游戏甚至 通过将他们的屏幕截图发送给其他玩家来控制玩家。也可以作为用户在被封禁后投诉时作弊的证明。
最后,您甚至可以使用 OpenCV 进行更深入的研究。当你在 向玩家展示迷宫 30 秒,启动前置摄像头 设备并使用 OpenCV 连续检查是否有其他对象 而不是玩家的头在镜头前。如果是这样,那么 玩家正在尝试使用另一台设备截取屏幕截图。拿 立即行动。你可以用机器语言来训练它。
能走多远,取决于你愿意花多少时间,以及你对玩家在线作弊的关心程度。唯一要担心的是玩家 de-compiling 游戏并删除了这些功能,但值得实施。
My Android phone takes screenshots differently. I swipe down from the top of the screen and select the "Capture" option.
在 Android 上没有什么总是 the-same。这在某些较旧或不同的 Android 设备上有所不同。 您可以检测屏幕上的滑动模式。最好的方法是建立一个配置文件来处理来自不同制造商的每个 Android 设备。
对于那些发表评论的人来说,这是可以做到的。你必须这样做,特别是如果它是多人游戏。仅仅因为游戏可以被黑客入侵并不意味着程序员不应该实施基本的黑客防御机制。应实施基本的黑客攻击预防机制,然后根据玩家的反馈进行改进。