0

クライアントマシンで利用可能なjarファイルを保護したいというトリッキーな状況があります。

Java プロジェクトがあり、build.xml を使用して、インストール後のクライアント マシンで使用できる jar ファイルを生成しています。

ここで、jar ファイルで使用可能なコードを保護する必要があります。これは、すべてのクライアントが逆コンパイルを試みてから、コード ベースを確認します。

クライアントが UI を使用してプロジェクトをトリガーしようとするときのような依存関係があります。サーバーで Java ファイルを生成し、この Java ファイルをクライアント マシンにダウンロードしてから、Java ファイルをコンパイルして .class を取得します。クライアント マシンにダウンロードされた Java ファイルは、jar ファイルとその内部の関数を参照します

proguard やその他のツールを使用してコードの難読化を行うと、jar 内のすべての関数名が変更され、ダウンロードされた Java ファイルがクライアント マシンでコンパイルされないのではないかと心配しています。 .

Java ファイルを生成し、実行時にクライアント マシンにダウンロードするサーバー側のロジックを変更できません。

コンパイルを中断することなく、クライアント マシンで jar ファイルを保護するためのロジックが必要でした。主に、クライアントが自分のマシンで利用可能な jar を使用して私のコードを表示したくありません。

どんな助けでも大歓迎です、事前に感謝します

4

1 に答える 1

0

ProGuard を使用している場合は、コールバック メソッドの処理に関心がある可能性があります。

アプリケーション、アプレット、サーブレット、ライブラリなどに、外部コード (ネイティブ コード、スクリプトなど) から呼び出されるコールバック メソッドが含まれている場合、それらとおそらくそれらのクラスも保持する必要があります。これらは、たとえばアプリケーションのメイン メソッドによく似た、コードへの単なるエントリ ポイントです。それらが他の -keep オプションによって保持されない場合、次のようなオプションでコールバック クラスとメソッドが保持されます。

-keep class mypackage.MyCallbackClass {
    void myCallbackMethod(java.lang.String); }

これにより、指定されたクラスとメソッドが削除または名前変更されないように保持されます。

外部から呼び出したいメソッドとクラスの数が限られている場合は、難読化が行われる前にそれらの名前を自分で変更 (縮小) できます。したがって、これらのメソッドにのみ独自の難読化/縮小を追加してください。次に、この縮小された名前をクライアントのプログラムに使用します。残りは難読化する ProGuard 次第です。

于 2016-02-06T08:04:29.560 に答える