1

所以我正在制作一款小游戏,而我所在的市场非常……竞争激烈……竞争如此激烈,以至于将它免费泄露给公众是非常普遍的。要泄露游戏,此人必须移除 HWID 系统和 Killswitch 系统。为此,最常用的方法是在整个项目中搜索“新 URL”并检查它创建的所有链接,然后在需要时将其删除。

这必须只使用默认的 Java 类,我不能使用任何库或其他可链接下载。

我的问题是:“是否可以在不使用 URL 类的情况下向我的保管箱文件发出请求以读取文本文档?”

不确定我是否涵盖了我需要涵盖的所有内容,因此如果您感到困惑,我可以提供更多信息。

提前致谢!

4

3 回答 3

5

这真的是古老的“如何保护我的 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;
}

您当然可以继续向下堆栈并通过反射调用进行实际读取,因此您永远不会引用真实的对象类型,因此很难找到它。

于 2012-05-03T19:16:07.893 回答
1

一个相当低技术的混淆:创建一个包含 URL 实例的类:

class myFoo {
    private URL url;
    myFoo (String s)  throws MalformedURLException {
        this.url = new URL(s);
    }
    public getHatSize() {
        return this.url;
    }
}
于 2012-05-03T19:28:06.350 回答
1

您可以改用 URI。

URI uri = new URI("http://...");
uri.toURL().openConnection():
于 2012-05-03T19:20:03.767 回答