我试图隐藏我的应用程序的一些静态字符串以使其更难以反编译,这种方式就像密码算法名称这样的常量在混淆代码中更难找到。
我考虑过这样的事情:
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});
最后两个选项似乎比原始选项“更暗”,但我想有更好的方法可以做到这一点。
我该如何改进?谢谢
答案 0 :(得分:9)
首先,你不应该只写
String FROM_CHAR2=new String(new char[]{102,114,111,109,95,99,104,97,114,115,95,50});
char数组实际上是一个String,这是一个死的赠品。
您可以执行以下操作:
答案 1 :(得分:2)
我更喜欢使用解密算法在静态(类)初始化程序中设置值 像
这样的东西class ...
String CONCAT;
static {
CONCAT = uncrypt ("ahgsdhagcf");
}
其中 uncrypt 可能真的是一个很好的解密算法或者基本64解码稍微弱一些。
在任何情况下,您都需要一个简单的程序来首先对字符串进行编码。