可能重复:
hiding strings in Obfuscated code
我试图隐藏我的应用程序中的一些静态字符串,以使其更难反编译,这样就像密码算法名称这样的常量很难在混淆的代码中找到。
我考虑过这样的事情:
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});
最后两个选项似乎比原始选项更“黑暗”,但我想有更好的方法来做到这一点。
我该如何改进这一点呢?谢谢
发布于 2012-10-28 00:06:08
首先,你不应该只写
String FROM_CHAR2=new String(new char[]{102,114,111,109,95,99,104,97,114,115,95,50});
char数组实际上是一个字符串,这是一个确凿的证据。
您可以执行以下操作的组合:
,只是为了减少实际字符串在运行时存在的时间
发布于 2012-10-28 00:08:03
我更喜欢使用解密算法在静态(类)初始化器中设置值,如下所示
class ...
String CONCAT;
static {
CONCAT = uncrypt ("ahgsdhagcf");
}
其中uncrypt可能真的是一个很好的解密算法,或者稍微弱一点的base64解码。
在任何情况下,您都需要一个简单的程序来先对字符串进行编码。
https://stackoverflow.com/questions/13101727
复制相似问题