首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆可能会泄露过多有关编程逻辑的信息的资源字符串

混淆可能会泄露过多有关编程逻辑的信息的资源字符串
EN

Stack Overflow用户
提问于 2012-06-23 01:13:28
回答 2查看 8.6K关注 0票数 2

我目前使用LVL和Proguard的组合作为对抗盗版的第一道防线。

但是,资源字符串又如何呢?例如,如果有一个资源字符串,如"License check failed“,那么盗版者不需要简单地追踪该资源id到它在代码中使用的位置吗?事实上,如果字符串是像“请联系dev”这样的通用字符串,也是如此。

最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-24 23:27:17

如果您定义了资源字符串,则可能会在以下位置定义或使用它:

  • 字符串资源文件res/值/Strings.xml,

布局文件res/

  • /*.xml,
  • 生成的资源文件R.java,
  • 您的java代码src/**.java.

<代码>F29

编译后,资源字符串、资源名称和资源整数代码最终为:

  • 资源文件resources.arsc (字符串,名称和代码),
  • 资源类R$string.class (名称,代码),
  • 您的编译代码**.class (内联代码)。

ProGuard将完全删除R$string.class,但安卓反编译器可以重新构建resources.arsc中的所有信息。这仍然需要一些工作,但字符串可能确实暗示了代码的目的(以及某些API调用)。

您可以通过加密/混淆代码中的字符串和使用反射来访问某些API来改进这一点,如谷歌的presentation Evading Pirates and Stopping Vampires中所建议的那样。

ProGuard用于Android DexGuard的闭源兄弟可以为你加密字符串(以及API调用和整个类),这可能比你手动实现的效率更高,而且不会增加源代码的负担。

(我是ProGuard和DexGuard的开发者)

票数 12
EN

Stack Overflow用户

发布于 2016-12-21 08:12:23

当我想隐藏android中的重要字符串时,我会将它们放在一个c/c++库中。然后我使用JNI调用来检索它们。在c库中,我更进一步,我将字符串转换为十六进制,当im检索到相同的字符串时,我再次将其从十六进制转换为整数。当黑客试图查看c/c++库时,很难找到您的秘密字符串(特别是在转换为十六进制的情况下)。

这里有一个很好的article,以及如何开始这样做。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11161024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档