保护Apk文件

问题描述:

我开发了一个应用程序的Android,我想发布它在谷歌播放。 我想在发布之前将APK文件发送给其他人。保护Apk文件

我的问题是,是什么保护我的apk与别人发布它自己?

我可以在调试中编译应用程序,所以谷歌播放不除了它。 我可以用私钥在发布版中编译应用程序,但是如果包名从未上传到Google Play,则另一个开发者帐户可能会将其作为他的应用程序上传,是不是?

我做什么不解的是,私有密钥从别人使用相同的包名,如果他不拥有密钥保护的应用程序。但是,如果当前没有上传apk文件,是否会保护上传的apk?另外,对一个apk进行反向工程(签名或调试签名)很复杂,只需更改软件包名称即可。这样,任何人都可以在他的帐户中将任何应用程序发布为“新”应用程序。

也许有人可以清理一些事情。提前

THX基本上,如果您的APK未签名,你不能把它部署到GOOGLEPLAY。更多信息here

可以混淆的apk代码使用ProGuard,这使得很难逆向工程您的APK。

+0

但我不能在发布模式下编译而不提供签名密钥......我也认为,应用必须签名,否则android不会安装它。 – Kedu 2014-09-23 20:50:43

+0

对,它在调试模式下签名:_在调试模式下,您使用由Android SDK工具生成的调试证书对您的应用程序进行签名。这意味着如果您的应用程序处于调试模式,则无法释放它。否则,如果您以发布模式登录它,但可能没有签名密钥库,他们无法更新应用程序。 – 2014-09-24 09:39:00

+0

他们可以使用释放键进行简单重新签名。 – 2014-09-24 14:54:43

我可以在调试中编译应用程序,所以谷歌播放不除了它。

这是真的,玩不除外未签名的应用。但是,逆向工程是一个问题。

我couldy编译与私钥发行的应用程序,但如果 包的名字从来没有被上传到Google Play,其他开发商 帐户可能只是上传它作为他的应用程序,不能他?

也是如此。他不能在没有密钥存储的情况下更新它,但他可以在Google play上上传。当我发送它们进行测试时,我从不登录应用程序。

幸运的是,我们有一个名为Proguard的工具会停止工作,或者至少会让某人很难做逆向工程。 Proguard做了很多很酷的事情,但最重要的是它通过重命名每个类,方法,字段等来保护你的代码。所以如果你有一个MyActivity类有一个方法doSomething,我现在将是(例如)类A方法乙等

+0

即使作为测试人员 - 调试应用程序仅通过调试密钥进行签名,您也无法安装未签名的应用程序。而proguard绝不会防止某人完整地分发你的应用程序 - 至多,它可以保护*其他*一些旨在限制未经授权的使用的其他机制,以及*禁止它的最微不足道的*尝试。 – 2014-09-23 21:51:52

+0

当我说unsigned我实际上意味着用一个调试键签名(因为这是在IDE中运行或调试项目时以调试模式自动完成的)。如果您使用调试密钥签署了应用程序并且运行了proguard,则没有人可以在Play上部署完整的应用程序,并且代码很难进行反向工程。 – 2014-09-23 22:10:53

+0

您不需要对代码进行反向工程,以使用发行密钥对其进行重新签名。 – 2014-09-24 14:53:41

为了防止您的测试您将APK上传到应用商店,你自己可以私下把它发布到Play商店中的任何测试版或Alpha阶段。您可以控制哪些人可以看到并下载您的应用。别担心,你没有公开提供它。见Use alpha/beta testing & staged rollouts。现在你已经可以在游戏商店使用该软件包名称,但只有测试人员才能看到它。

为了防止有人逆向工程您的应用程序,改变了包名和重新发布在商店,如其他人所说,你可以混淆您的代码,使逆向工程难度。那里有很多工具。有些是免费的,有些则是付费的,但有更多的功能,比如防篡改等。有关更多详细信息,请参阅How to avoid reverse engineering of an APK file?问题。

+0

我确实上传到谷歌玩acutally,但没有发布它。所以我想,现在它的保护不受其他人的欢迎,因为软件包名称已注册到我的开发人员帐户?到目前为止我没有使用SafeGuard。上传apk文件时,你是否认为始终使用它很重要?如果它很容易从apk获得软件包名称并进行更改,那是一个大问题... – Kedu 2014-09-23 20:56:14

+0

您可以从设备上安装的apk中使用免费工具获取所有代码,资产,资源文件等15分钟或更快,如果你知道正确的工具。有一些可以使用的免费调试器。但是一些付费调试器擅长反向工程Java代码。所以,这取决于您在代码中存在多少重要的业务逻辑等。你可以通过混淆使其变得更加困难。然而它仍然没有充分的证据。只需更改软件包名称并再次上传应用程序就不那么容易了。然而这并非不可能。 – 2014-09-23 21:03:41

+0

您首先声明包名称的想法是好的,但混淆**本身不会防止盲目重命名。 – 2014-09-23 21:50:56