这真的是古老的“如何保护我的 Java 应用程序免受 X 攻击?”。
事实是你不能。任何有足够时间和工作的人都可以拆开您的 Java 应用程序并将其重新组合在一起。你当然可以使用一些很棒的混淆器,这对于任何想要快速完成它的人来说都是不切实际的。
过了那一点,你问了一个有点微不足道的问题。这是“我如何隐藏'新网址'”。我假设您最终将依赖 urlconnection 类来实际使用 url。这可以处理大量优化,您可以添加更多层,例如将类名和 url 存储为字节数组以及许多其他内容。它也可以与构造函数和类的一些缓存有关。我真的建议你不要使用这个!
public static URLConnection getConnection() {
try {
Class<?> cla = Class.forName("java.net.URL");
return (URLConnection) cla.getMethod("openConnection", new Class[0]).invoke(cla.getConstructor(String.class).newInstance("http://somtopsecereturl.tld"), new Object[0]);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return null;
}
您当然可以继续向下堆栈并通过反射调用进行实际读取,因此您永远不会引用真实的对象类型,因此很难找到它。