混淆字符串值 java android

obfuscate string value java android

经过搜索我了解到proguard不能混淆字符串值, 我尝试了 char [] 类型,但反编译后我可以看到变量的内容。那么有没有办法混淆静态字符串变量呢?混淆后,我的代码中有一个地址(字符串)应该是秘密的。

反编译后的代码

public static final char[] f4516b;
....
 static {
    f4516b = new char[]{'h', 't', 't', 'p', ':', '/', '/', '1', '0', '0', '.', '1', '0', '.', '1', '0', '0', '.', '1', '0', '/'};

您无法在应用程序中保留某种离线秘密。如果您的应用程序在某个时候需要它来工作,则可以自动对其进行逆向工程 - 否则您的应用程序也会缺少所需的信息。

您始终可以创建去混淆方法,例如哈希或盐,并将混淆后的字符串保存在静态变量中。这样反编译时就看不到字符串了

但是,如果此人使用去混淆方法,他们将拥有您的字符串。此外,如果他们使用 wireshark 或类似的东西监听传出的网络呼叫,则远程呼叫地址将始终可用。

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