所以我正在制作一款小游戏,我所处的市场非常……竞争激烈……竞争如此激烈,以至于免费向公众泄露是非常普遍的。要泄露游戏,此人必须移除 HWID 系统和 Killswitch 系统。要做到这一点,最常见的方法就是在整个项目中搜索“新 URL”并检查它创建的所有链接,然后在需要时将其删除。
这必须只使用默认的 Java 类,我不能使用任何库或其他可链接的下载。
我的问题是:“是否可以在不使用 URL 类的情况下向我的保管箱文件发出读取文本文档的请求?”
不确定我是否涵盖了我需要涵盖的所有内容,所以如果您感到困惑,我可以提供更多信息。
提前致谢!
最佳答案
这确实是古老的“我如何保护我的 Java 应用程序免受 X 攻击?”。
事实是你做不到。任何有足够时间和工作的人都能够拆开您的 Java 应用程序并将其重新组装起来。您当然可以使用一些很棒的混淆器,这对于任何想要快速完成它的人来说都是不切实际的。
过了那个点你问了一个有点微不足道的问题。即“如何隐藏‘新 URL’”。我假设您最终将依赖 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;
}
您当然可以继续沿着堆栈向下移动并通过反射调用进行实际读取,这样您就永远不会引用真正的对象类型,从而很难找到它。
关于java - 通过 Java 在不使用新 URL() 的情况下加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437418/