2

我即将发布一个在 Assets/ 文件夹中包含大量 JavaScript 的应用程序。我已将所有内容(JS)缩小并合并到一个大约 500kb 的大文件中。我正在寻找对其进行加密并将其隐藏在资产文件夹中的方法。

您认为最好的方法是什么?

  1. 在 Java 类中存储为纯字符串,并且(我不知道它是否可能)告诉 proguard 专门加密它。--> 我会WebView通过onintercepturlloading

  2. 作为加密文件存储在 Assets 中,使用任何第三方或 Java 加密例程进行热解密 - 我想听听。

  3. 无论你想要什么

理想情况下,该解决方案应作为构建过程的一部分包含在内,但如果没有其他解决方案,我将手动生成加密数据。

编辑:DexGuard 似乎是专业的方式,但它是 350 欧元,还有免费的替代品吗?

请不要问我为什么要加密它。我需要这样做,就像有一天你需要去看牙医一样。

4

2 回答 2

2

我建议您不要依赖第三方工具,因为您可能会被供应商锁定,这意味着如果他们停止开发软件等等。我会将 Javascript 的内容放在一个大的最终静态中String,然后正如你所说的那样告诉 Proguard 去做这件事很神奇。

取自 Proguard 的文档

ProGuard 是否加密字符串常量?

不。程序代码中的字符串加密必须根据定义完全可逆,因此它只会提高混淆级别。它增加了代码的占用空间。然而,根据大众的需求,ProGuard 的 Android 闭源兄弟 DexGuard 确实支持字符串加密,以及类加密和隐藏对敏感 API 的访问。

于 2013-03-07T12:47:01.923 回答
0

绝对没有什么可以被认为是安全的。因此,混淆几乎是浪费精力和获得安全性之间的最佳折衷方案(使黑客攻击更加困难,但难度很小)。

保护加密方案需要密钥。而且你没有地方可以隐藏你的钥匙。您可以将它放在您的 APK 中,也可以让 APK 从某个服务器下载它。使用正确的工具很容易发现两者。

如果您只是想减慢黑客的速度,那就选择简单的方法。将 javascript 部分分布在不同的位置,并使用一些简单快速的编码(如base64. 然后在飞行中组合它们。一个专业的人会像任何加密方案一样破解它,但你不会浪费很多时间来实施它。有更多时间编写您的实际应用程序。

DexGuard与我上面描述的差不多(字符串混淆),但对于独立开发者来说,我觉得它相当昂贵(最便宜的许可证是 350 美元)。

于 2013-03-07T12:48:39.973 回答