Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保护我的应用程序免受盗版_Android_Security_Piracy Prevention - Fatal编程技术网

Android 如何保护我的应用程序免受盗版

Android 如何保护我的应用程序免受盗版,android,security,piracy-prevention,Android,Security,Piracy Prevention,我正在开发一款android应用程序,并计划发布它(付费应用程序)。我听说盗版Android应用程序非常容易(比iphone容易得多)。根据您的经验或您所知道的,我想知道如何提高我的应用程序的安全性?我知道我永远无法保证它的100%安全,但我想让人们更难盗版或非法分发它 有什么想法、经验和评论可以分享吗?看看谷歌游戏授权框架 这是你最好的选择 Google Play许可证是一项基于网络的服务,允许 应用程序查询受信任的Google Play授权服务器以确定 应用程序是否许可给当前设备用户。这个

我正在开发一款android应用程序,并计划发布它(付费应用程序)。我听说盗版Android应用程序非常容易(比iphone容易得多)。根据您的经验或您所知道的,我想知道如何提高我的应用程序的安全性?我知道我永远无法保证它的100%安全,但我想让人们更难盗版或非法分发它
有什么想法、经验和评论可以分享吗?

看看谷歌游戏授权框架

这是你最好的选择

Google Play许可证是一项基于网络的服务,允许 应用程序查询受信任的Google Play授权服务器以确定 应用程序是否许可给当前设备用户。这个 授权服务基于Google Play的功能 授权服务器,以确定给定用户是否获得使用许可 给定的应用程序。如果出现以下情况,Google Play会将用户视为获得许可 用户是应用程序的记录购买者


我为Android发布了一个免费的反恶意软件应用程序,确保没有人入侵它对它的成功至关重要。安卓市场上应用程序面临的最大威胁包括源代码泄露、复制/分发付费应用程序以及密钥更新。我在下面解释每一个问题以及解决它们的方法

首先,描述了如何通过解包编译的代码并查看源代码来对Android应用程序进行反向工程。你将无法阻止这种情况发生在你的应用程序上。时期有意愿的人可以随时查看您的源代码,如果他们获得了您的apk副本(在根手机上很容易获得)。好消息是,您可以混淆代码的重要部分,从而更难进行反向工程。是Android提供的一个工具,它可以让你在打包过程中混淆(使代码更难阅读)。但是,为了防止您的重要代码被读取,您需要将所有易受攻击的方法或变量移动到非
活动
服务
广播接收器
的文件中。有关完整事实,请阅读文档

为了保护你的应用程序的非法复制和分发,Google Play提供了一些。不幸的是,LVL也不是完全安全的。关于如何破解它(Google Play之前)的详细操作方法是可用的

最后,上面链接的文章以及众多学术文章和在线博客描述了一旦源代码(甚至是模糊的源代码)泄露,once如何仅仅添加一些自己的恶意代码,退出应用程序,并在Android市场上发布。这里的好消息是,除非您的android许可证密钥密码很容易猜到,或者如果您将其提供给其他人,否则攻击者将无法发布具有相同许可证密钥的应用程序。这不仅可以防止您受到指责,还可以使恶意应用程序无法通过原始应用程序访问可用数据(例如
SharedReferences


总之,要真正保护您的应用程序免遭盗版,最好的方法是正确配置和使用Proguard、Google Play Licensure,并使用非常安全的许可证密钥为您的最终apk签名。

如果应用程序被盗版,您可以添加篡改检查和模糊处理,以提醒用户/禁用功能/向服务器报告。我用它来强化模糊处理

篡改检查

  • 安装程序应用程序-使用软件包管理器确保安装的应用程序是play/amazon应用程序商店
  • Emulator check(仿真器检查)-检查系统属性,查看应用程序是否在仿真器上运行,而在开发人员之外的仿真器可能指示攻击/篡改
  • 可调试检查-使用包管理器检查可调试标志,该标志在产品中应处于关闭状态,以便指示攻击/篡改
  • 签名证书检查-使用package manager验证应用程序是否已使用您的开发人员证书签名(如果有人解压缩并重新打包/退出应用程序,则此检查将被中断)

更新:回答这个问题后,我写了更多关于篡改检测的文章。

我听说谷歌授权(通过应用程序签名)真的一文不值。有一些自动工具,可以在一次点击中下载应用程序、删除许可证并与新用户签名(我在一个论坛中阅读了它)。。我将明确使用许可,但我需要另一层防御..应用程序签名机制已被弃用。新的许可证制度是基于网络的,而且相当可靠。你将不得不使用一系列技术,但你仍然无法完全阻止它。使用
googleplay许可
code模糊处理
作为开始。我会建议检查流行的盗版网站,并要求一键式主机下载这些文件,但我不确定他们是如何处理的。它很快就会在其他地方回来,这是非常无望的。我建议使用C++来构建你的应用程序的核心部分,使用Android NDK,你将使用网络来验证有效的买家。哇…非常好的信息和非常详细的答案。我喜欢一篇论文证明了这一点。我会照你的建议去做。我仍然鼓励人们分享他们的经验我想指出的是,你不需要一个根设备来获得APK的副本
ADB pull com.example.coolappdude
。此外,Proguard是一个Java字节码模糊器。制造商ProGuard有一个非免费程序DexGuard,它是Dalvik字节码模糊器。可能会根据你偏执狂的程度来考虑一个或另一个。@ CarlSmith,你在说什么严重的问题?另外,你能找到你所看到的这些大公司发表这些声明的来源吗?您的评论非常模糊。@CarlSmith此回答没有讨论DRM,但对于某些可能有用的应用程序(Android为API 3.0+提供Widevine DRM)。为什么投反对票?对不起,投反对票太过分了。我