如何在Android Phonegap移动应用程序中加密HTML + JS资产?

时间:2011-05-28 08:34:01

标签: java android encryption cordova obfuscation

我使用Phonegap基本包装和HTML5创建了移动应用。我的目标是加密资产目录(JS和HTML文件)中的文件,以便解压APK文件并希望查看JS源的人无法读取这些文件。

好的,我知道没有绝对完美的解决方案。在我这个问题的路上,我已经尝试了如何解决我的源代码的复制保护(JS缩小,混淆等等),但我发现获取原始代码非常简单(使用JSBeautifier,firebug) ,包括混淆的脚本等......)。

所以我的问题是 - 是否有一些简单的方法来加密JS + HTML文件(因此在简单解压缩APK文件时它们不可读和有用)以及如何在JAVA for Android平台中实现它?

注意:我不了解JAVA语言,所以请包含我可以使用的工作示例。

编辑:我在制作最终APK包时也调查了ProGuard功能,但它对我来说没用,因为它只处理JAVA文件,但保留资源目录。

4 个答案:

答案 0 :(得分:11)

前段时间我在iOS上遇到了同样的问题。结果只是在为PhoneGap for iOS打补丁之后。我在http://oleksiy.pro/2011/09/20/phonegap-application-encryption/写了一篇文章。此外,对于Android,这种方法可能很弱,因为java代码可能被99%反编译,黑客会看到你的密钥。

答案 1 :(得分:4)

没有简单的方法可以做到这一点。如果你想加密你的JavaScript,你需要某种密钥来解密它。密钥无法存储在设备上,因为这样很容易找到密钥并解密源代码。如果您的应用程序需要用户登录,您可能会在用户登录后返回加密密钥并使用该密钥解密JS和HTML文件。您可以通过PhoneGap插件使用标准的Android加密库。

话虽如此,它只是JavaScript,所以如果你真的需要加密,你应该考虑改变你的方法。

答案 2 :(得分:4)

我发现的最佳组合是DojoToolkit和高级模式下的Closure编译器。

高级模式下的关闭使得JavaScript代码几乎不可能进行逆向工程,即使在通过美化器之后也是如此。一旦您的JavaScript代码被混淆,超出任何认可和任何反向工程的可能性,您的HTML将不会泄露您的大部分秘密。

此链接用于在移动应用程序的高级模式下使用Dojo Toolkit和Closure Compiler:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

当然,Dojo Toolkit适用于PhoneGap。

答案 3 :(得分:0)

您可以使用webview并加载base64字符串:

protected String base64Str = "+wL00h2L....";
wv1.loadData(base64Str, "text/html; charset=utf-8", "base64");