如何保护Android APK中存储的资产

时间:2013-08-09 16:20:20

标签: android assets

我相信这个问题已被提出,但我对他们的答案不满意,并在此再次发布。

有人可以告诉我如何保护我的Android应用程序资产免受那些想要构建类似应用程序的复制猫吗?

3 个答案:

答案 0 :(得分:9)

与往常一样,在便利性和安全性之间存在权衡。您希望自己的应用程序越安全,开发就越不方便。

由于易于反编译,源代码本质上是不安全的,特别是对于root电话。为了保护您的源代码,您可以对代码进行模糊处理和/或加密,这将阻止反编译。不完全确定哪些工具适用于Android,但我确信它会使您的构建过程复杂化。如果你只是混淆,反编译可能仍然是可能的,但是会更加困难,如果使用强大的混淆程度,可能需要尝试反编译代码的人知道并理解字节码。

为保护您的资产,我相信您唯一的选择是使用加密。同样,这将使应用程序和/或构建过程复杂化,具体取决于您实现的位置。

即使您使用加密来保护资产,也必须保护源代码中的加密密钥。显然,如果您的加密密钥在源代码中是纯文本,那么您使用的加密方案无关紧要,那么任何人都可以获取密钥和资产并进行解密。所有这一切都是添加一个小栅栏跳过。

但是,如果您正确保护加密密钥并使用良好的加密算法,则应该不必担心。这是一个相当复杂的过程,很难在代码中使用密钥进行加密,而不是将其保存在纯文本中。即使你没有在代码中保留明文,在某些时候它必须在内存中执行解密。因此,如果有人可以在正确的时间附加调试器或转储内存,它将危及密钥。当然,这需要一个技术更为熟练的对手。

总的来说,您需要准确确定您担心窃取资产的人。如果你担心普通的Joe会复制它们,那么你应该没问题。如果您担心专业黑客,脚本小子等获得访问权限,那么您可能会运气不好。

答案 1 :(得分:7)

  

有人可以告诉我如何保护我的Android应用程序资产免受那些想要构建类似应用程序的复制猫吗?

一般来说,你不能。如果它在应用程序中,任何想要的人都可以访问它们。

欢迎您推出自己的加密方案,或使用DexGuard等工具。但是,由于解密引擎和密钥必须位于应用程序本身,所以这些都会增加获取资产所需的工作量。使其变得更加困难将降低某人从您的APK中获取资产的几率,但这并不能阻止这种可能性。当然,还有其他方法可以解决这些问题(例如,屏幕截图和图像编辑器,录制应用程序播放的音频)。

答案 2 :(得分:0)

您可以使用强加密算法加密资产文件夹内容,并在运行时解密它们。通过使用zip工具简单地提取apk,Copycats无法轻松解密并获取资产文件夹内容。