【发布时间】:2012-10-17 14:13:36
【问题描述】:
我试图隐藏我的应用程序的一些静态字符串,以使其更难反编译,这样就像密码算法名称这样的常量更难在混淆代码中找到。
我考虑过类似的事情:
String CONCAT= "concat"+"string";
String RAW_STRING= "raw_string";
String FROM_BYTES=new String("from_bytes".getBytes());
String FROM_CHARS=new String(new char[]{'f','r','o','m','_','c','h','a','r','s'});
String FROM_CHAR2=new String(new char[]{102,114,111,109,95,99,104,97,114,115,95,50});
最后两个选项似乎比原始选项“更暗”,但我想有更好的方法可以做到这一点。
我该如何改进呢?谢谢
【问题讨论】:
-
我从来没有为 Android 编程过,但是我看不出问题的重点。如果用户不知道如何反编译,只能通过记事本阅读代码,你只是放了一些没用的算法名,他/他不知道真正涉及的是哪一个。如果她/他知道如何反编译,那么没有任何混淆可以阻止他/他用 System. out.println.
-
我正在使用简单的 gradle 函数隐藏这种字符串。它只保护肉眼,但无论如何,总比没有好:gist.github.com/shomeser/68f4fe360be0edac95e4
标签: java android security proguard