混淆字符串值java android

时间:2016-11-24 16:35:31

标签: java android string proguard obfuscation

搜索后我明白了proguard不能混淆字符串值, 我尝试了char []类型,但在反编译后我可以看到变量的内容。那么有一个混淆静态字符串变量的解决方案吗?在混淆之后我的代码中有一个adresse(字符串)应该是秘密的。

反编译后的代码

p4.cpp:15:25: error: ‘len’ was not declared in this scope
 void printList(int (&v)[len]) {
                         ^
p4.cpp: In function ‘void printList(...)’:
p4.cpp:16:16: error: ‘v’ was not declared in this scope
   for (int a : v) {

3 个答案:

答案 0 :(得分:2)

您无法在应用程序中保留某种脱机秘密。如果您的应用程序需要它在某些时候工作,它可以自动进行反向工程 - 否则您的应用程序也将缺少所需的信息。

答案 1 :(得分:1)

您始终可以创建一个去混淆方法,如散列或盐,并将混淆的字符串保存在静态变量中。因此在反编译时不会看到字符串。

但如果该人使用去混淆方法,他们将拥有你的字符串。此外,如果远程呼叫地址通过wireshark或其他类似方式监听外拨网络呼叫,则它们始终可用。

答案 2 :(得分:1)

隐藏网址没有多大意义。它可以在网络层上看到。如果您想阻止某人访问您的网站,您可以使用例如基于HTTPS的基本身份验证,并使用Android NDK隐藏秘密(仅作为示例)。它仍然可以被反编译,但可能会更加困难。