我目前使用LVL和Proguard的组合作为对抗盗版的第一道防线。
但是,资源字符串又如何呢?例如,如果有一个资源字符串,如"License check failed“,那么盗版者不需要简单地追踪该资源id到它在代码中使用的位置吗?事实上,如果字符串是像“请联系dev”这样的通用字符串,也是如此。
最好的方法是什么?
发布于 2012-06-24 23:27:17
如果您定义了资源字符串,则可能会在以下位置定义或使用它:
布局文件res/
<代码>F29
编译后,资源字符串、资源名称和资源整数代码最终为:
ProGuard将完全删除R$string.class,但安卓反编译器可以重新构建resources.arsc中的所有信息。这仍然需要一些工作,但字符串可能确实暗示了代码的目的(以及某些API调用)。
您可以通过加密/混淆代码中的字符串和使用反射来访问某些API来改进这一点,如谷歌的presentation Evading Pirates and Stopping Vampires中所建议的那样。
ProGuard用于Android DexGuard的闭源兄弟可以为你加密字符串(以及API调用和整个类),这可能比你手动实现的效率更高,而且不会增加源代码的负担。
(我是ProGuard和DexGuard的开发者)
发布于 2016-12-21 08:12:23
当我想隐藏android中的重要字符串时,我会将它们放在一个c/c++库中。然后我使用JNI调用来检索它们。在c库中,我更进一步,我将字符串转换为十六进制,当im检索到相同的字符串时,我再次将其从十六进制转换为整数。当黑客试图查看c/c++库时,很难找到您的秘密字符串(特别是在转换为十六进制的情况下)。
这里有一个很好的article,以及如何开始这样做。
https://stackoverflow.com/questions/11161024
复制相似问题