2012-05-03 9 views
1

私は小さなゲームを作っています。私がやっている市場はかなり競争力があります...競争力があるので、公衆には無料です。ゲームをリークさせるには、HWIDシステムとKillswitchシステムを取り外す必要があります。これを行うには、最も一般的な方法は、プロジェクト全体を「新しいURL」として検索し、作成したすべてのリンクを確認し、必要に応じて削除することです。Java経由で新しいURL()を使用せずにファイルをロード

これはデフォルトJavaクラスのみを使用しなければならず、ライブラリや他のリンク可能なダウンロードを使用できません。

私の質問は次のとおりです。「URLクラスを使用せずにテキストドキュメントを読み込むには、Dropboxファイルにリクエストすることはできますか?」

私がカバーする必要があるすべてをカバーしているかどうかわかりません。混乱している場合は、できる限り多くの情報を提供することができます。

ありがとうございます!

+1

あなたは常にプロトコルを自分で実装することができます - あなたが本当に必要最低限​​を。 –

答えて

5

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

実際はできません。十分な時間と仕事を持っている人なら、あなたのJavaアプリを分解して戻すことができます。あなたはもちろん、それを速くしたいと思っている人にとっては非実用的ないくつかの素晴らしいobfusacatersで動作することができます。

これまでのところ、あなたは多少の些細な質問をしました。 「どのように「新しい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; 
} 

は、実際のオブジェクトの種類は、それは非常に難しい見つけるためになって参照したことがないので、呼び出します。

+0

+1はそれが推奨されていないことに言及しています。 –

+0

@ Krroae27問題は、このメソッドを使用してファイルをロードする必要があることです。私が述べたように、私は難読化する人たちができる限り多くの接続を隠す必要があります。あなたが私に与えた方法が毎回動作するのに十分な信頼性があるのか​​どうかは分かりませんが、これは起動の冒頭で実行する必要があるだけです –

+0

@ user1363526どうやってファイルをロードしていますか?あなたはクラスローディングを意味するのですか?私がここで行った唯一のことは、URLクラスとopenconnectionメソッドを呼び出すためにuse reflectionを使用することで、 'new URL'へのテキスト参照がないようにすることです(実際には通常と同じように信頼できます)。それはあなたの質問が信じていたものです。 – Krrose27

1

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

URI uri = new URI("http://..."); 
uri.toURL().openConnection(): 
1

かなりローテクの難読化:URLインスタンスを含むクラスを作成します。

class myFoo { 
    private URL url; 
    myFoo (String s) throws MalformedURLException { 
     this.url = new URL(s); 
    } 
    public getHatSize() { 
     return this.url; 
    } 
} 
関連する問題