我的应用程序可以反编译以显示字符串常量吗?
Can my app be decompiled to reveal string constants?
我的 Android 应用程序中有一个私人 API 密钥,用于某些区域 - 没有办法阻止用户以某种方式进行逆向工程或反编译 Java 看看那把钥匙是什么?将密钥作为静态字段放在 class 中不安全吗?把它作为字符串资源放在strings.xml里是不是更安全?或者完全是别的东西?还是根本不可能阻止有足够积极性的用户找到它?
不仅可以,还不难
您可以 更难 完全不将其存储为字符串,而是将其存储为在运行时转换为字符串的一系列数字(可能以某种方式混淆) .
但是
的答案
Or is it simply not possible to prevent a sufficiently motivated user from finding it?
是:对,根本不可能。
最好将您的 String
作为常量包含在 class 文件中,并使用 String obfuscation
和使用一些免费或商业混淆器的各种其他技术对其进行混淆。这是你能做的最好的,你会相当节省。您可以通过反编译并尝试找到密钥来再次检查自己,就好像您不知道一样。到时候你就会看到你的保护有多好。
我的 Android 应用程序中有一个私人 API 密钥,用于某些区域 - 没有办法阻止用户以某种方式进行逆向工程或反编译 Java 看看那把钥匙是什么?将密钥作为静态字段放在 class 中不安全吗?把它作为字符串资源放在strings.xml里是不是更安全?或者完全是别的东西?还是根本不可能阻止有足够积极性的用户找到它?
不仅可以,还不难
您可以 更难 完全不将其存储为字符串,而是将其存储为在运行时转换为字符串的一系列数字(可能以某种方式混淆) .
但是
的答案Or is it simply not possible to prevent a sufficiently motivated user from finding it?
是:对,根本不可能。
最好将您的 String
作为常量包含在 class 文件中,并使用 String obfuscation
和使用一些免费或商业混淆器的各种其他技术对其进行混淆。这是你能做的最好的,你会相当节省。您可以通过反编译并尝试找到密钥来再次检查自己,就好像您不知道一样。到时候你就会看到你的保护有多好。