3

Java クラスをどのように保護/暗号化できますか?

java.lang.ClassLoader に関するいくつかの記事と 1 つの PDF 記事を読んだところ、Java ClassLoader を理解することで、カスタム クラス ローダーを使用して暗号化されたクラス ファイルをその場で復号化できることが示唆されました。そして、カスタム クラス ローダーを使用してコードを保護することは無意味であると主張する別の記事を見つけました。ポイントは、最終的には defineClass メソッドを呼び出さなければならないということでした。 私の無知かもしれませんが、1 . 秘密鍵でクラスを暗号化

した場合はどうなるでしょうか 2. アプリ ランチャーがユーザーからのパスワードを受け入れます (パスワードは秘密鍵です) 3. アプリ ランチャーがカスタム クラスローダーを呼び出します 4. 次に、カスタム クラスローダーを呼び出しますクラスローダーは暗号化されたファイルをパスワード(秘密鍵)で復号化します 5.その後、すべてが実行を開始します






これにより、クラスファイルが逆コンパイルされるのを防ぐことができませんか?

PS
私は楽しみのためにこれをやろうとしています。

4

1 に答える 1

0

あなたはすでにあなた自身の質問に答えています:

復号化クラス ローダーは、 defineClassを呼び出す必要があります誰でも独自のクラス ローダーでアプリ ランチャーを起動し、アプリ ランチャーに defineClass に渡されたものをすべて書き出すバージョンの java.lang.ClassLoader を渡すだけです。

defineClass を回避する方法はありません(ネイティブ コードは別として)。

クラスが逆コンパイルされることを非常に心配している場合は、難読化ツール (ProGuard など) を使用する、事前にネイティブ コンパイラ (GCJ、Jet) を使用することをお勧めします。

于 2013-06-12T10:44:19.893 に答える