【发布时间】:2017-05-16 18:16:06
【问题描述】:
我正在做一个项目,我需要隐藏特定的 URL 调用,我不希望看到这个 URL 这里是 URL 调用的示例方法
public void example(View view) {
goToUrl("example.com");
}
【问题讨论】:
标签: java obfuscation
我正在做一个项目,我需要隐藏特定的 URL 调用,我不希望看到这个 URL 这里是 URL 调用的示例方法
public void example(View view) {
goToUrl("example.com");
}
【问题讨论】:
标签: java obfuscation
你真的不能。您可以混淆方法名称,因为最终不需要知道原始方法名称。你可以只使用混淆。在这里,您最终确实需要知道真实的 URL。所以需要有一个不混淆的功能。这意味着您可以从那里轻松获得结果。或者您知道,只需通过代理跟踪传出 HTTP 请求使用的 url。
【讨论】:
在将近 2 年后回顾这个问题,这个问题已经引起了很多关注,我发现了一些我最终用于字符串混淆的混淆器,但是每个混淆器都可以被破解。这是我的加密字符串的混淆器列表,我将从列出付费混淆器开始。
1. Zelix 克拉斯大师
他们的官方网站是https://zelix.com
在我看来,这是 jar 或 android 最好的 java 混淆器之一。 然而它并不像预期的那样便宜,因为混淆器有多好。
如果您是小型开发人员,单个许可证可能需要花费 239 美元;如果您是开发人员团队 (Comapany),则需要花费 479 美元。
可以看到功能列表here
2。 DexGuard
他们的官方网站是https://www.guardsquare.com/en
DexGuard 是由 Proguard 背后的人制作的混淆器
在我看来,这是第二好的混淆器。名称混淆比 Zelix 上的名称混淆要好得多。
我不确定他们的定价,因为我从未使用过它,但我已经看到它被用于应用程序。您如何请求定价here
免费混淆器。
您可以找到免费的替代品,例如 StringCare 和 Paranoid
它们不如我上面列出的那个,有java基础知识的人用这两个工具破解你的程序最多需要5秒。
【讨论】:
一种可能性是对需要混淆的字符串使用带有移位操作的整数数组。但正如其他人已经提到的,这只是一种隐藏纯字符串的机制。通过一些努力,它可以很容易地被解码。
Gettign int 数组代码
public static String getIntArrayCode(String string) {
int[] result = new int[string.length()];
for (int i = 0; i < string.length(); i++) {
int numericValue = Character.codePointAt(string, i);
result[i] = numericValue << 3;
}
StringBuffer arrayCode = new StringBuffer();
arrayCode.append("new int[]{");
for (int i = 0; i < result.length; i++) {
arrayCode.append(result[i]);
if (i < result.length - 1) {
arrayCode.append(",");
}
}
arrayCode.append("}");
return arrayCode.toString();
}
这个int数组需要复制到代码中。
为了不混淆,使用方法
public static String getString(int[] data) {
StringBuffer test = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int t = data[i] >> 3;
test.append((char) t);
}
return test.toString();
}
用法:
//"Hello12345&%$";
int []data1 = new int[]{1152,1616,1728,1728,1776,784,800,816,832,848,608,592,576};
System.out.println(getString(data1));
混淆应用程序(例如:使用 Proguard )将有助于在某种程度上隐藏解码功能。
【讨论】:
对于混淆字符串,您现在可以使用新的 gradle 插件 + 库,请在此处查看
https://github.com/MichaelRocks/paranoid
现在还有一个新插件也可以混淆资源,请在下面查看
https://github.com/shwenzhang/AndResGuard
分享让更多的开发者可以使用它,因此越来越多的开发者将为这些插件的进一步开发做出贡献,因此我们可以共同改进这些插件。
【讨论】: