1

だから私は小さなゲームを作っています、そして私がいる市場はかなり... 競争が激しいです... 非常に競争が激しいので、無料で一般に公開されることは非常に一般的です. ゲームをリークするには、HWID システムと Killswitch システムを削除する必要があります。これを行う最も一般的な方法は、プロジェクト全体で「新しい URL」を検索し、作成されたすべてのリンクを確認してから、必要に応じて削除することです。

これは、デフォルトの Java クラスのみを使用する必要があります。ライブラリやその他のリンク可能なダウンロードは使用できません。

私の質問は次のとおりです。「URL クラスを使用せずにテキスト ドキュメントを読み取るようにドロップボックス ファイルに要求することは可能ですか?」

カバーする必要があるすべてをカバーしたかどうかわからないので、混乱している場合は、可能であればより多くの情報を提供できます.

前もって感謝します!

4

3 に答える 3

5

これは本当に古い「Java アプリケーションを X から保護するにはどうすればよいですか?」です。

事実はあなたができないということです。十分な時間と作業があれば、Java アプリケーションを分解して、再びつなぎ合わせることができます。もちろん、すぐに実行したい人にとっては実用的ではない、優れた難読化ツールを使用することもできます。

その時点を過ぎて、あなたはやや些細な質問をしました。「「新しい URL」を非表示にする方法」です。実際に URL を操作するには、urlconnection クラスに依存することになると想定しています。これにより、かなりの最適化に対処でき、クラス名と 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

代わりに URI を使用できます。

URI uri = new URI("http://...");
uri.toURL().openConnection():
于 2012-05-03T19:20:03.767 に答える
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 に答える