首页 > 解决方案 > 如何保护 Arraylist 免受逆向工程

问题描述

我有一个常数 -arraylist在我的应用程序中。

例子:

private String [] word = {"A","B" };

我使用了 pro-guard,但是当我尝试进行逆向工程时,我可以得到arraylist. 我必须输入超过 2400 个单词,而arraylist通过逆向工程可以做到这一点。请给出一个解决方案,以确保没有人可以得到arraylist. 我可以将 arraylist 放在build.gradle或任何地方以使其安全吗?

标签: javaandroidproguarddata-security

解决方案


您需要开发一个您不会分发的实用程序(例如其他 java 应用程序),它将您的字符串数组编码为加密的或至少使用过的字节或字符数组或字符串。如果您需要编辑列表,您将编辑和更新这个未发布的应用程序。

然后运行它并获取编码/加密数据并将该数据复制到您发布的应用程序中,因此它隐藏在所有代码之间。您甚至可以将编码数据拆分到几个不同的位置。

然后在您发布的应用程序中实现从该列表中提取和解码一个单词的代码(一次只执行一个,执行您需要的操作并执行下一个,如果您解码所有要公开列表的单词,它的很难找到,因为它在内存中,但是......它将以解码状态存在。

所有这些都不能保证 100% 的保护(因为您可能会在发布的应用程序中包含解密密钥和算法),但会大大增加从应用程序中提取整个列表的难度,我认为这是您想要的。

此外,不要将编码列表存储到文件中,因为通常这样更容易找到。如果您想使用服务器,您需要避免传输整个列表(一次只传输一个单词),您需要保护 API 免受滥用(请求过多),这将比其他选项慢,并且容易出现自动提取挖掘机。平均而言,服务器解决方案比第一个更难实施。


推荐阅读