jhsdb(ホットスポットデバッガ)を使用して暗号化されたJavaアプリケーションをクラックする
Java コード保護の 1 つの解決策は、クラス ファイルの暗号化または jar ファイルの暗号化です。このタイプのソリューションは、暗号化されたクラス ファイルまたは jar ファイルを自己定義のローダーを通じてロードしますが、JVM のアタッチ メカニズムが存在するために役に立たず、JDK に付属のツールで簡単に解読できます。
サンプルアプリケーション
以下は、単純なスイング ウィンドウとボタンを備えたサンプル アプリケーションです。 https://github.com/3-keys/test-swing-app
アプリケーションの暗号化
Eclipse で実行可能な jar ファイルをエクスポートし、暗号化ツールを使用して jar ファイルを暗号化します。暗号化後の jar ファイルの構造は次のようになります。
test-swing-app.jar は暗号化された jar ファイル データであり、Launcher クラスはこのツールのカスタム ロード クラスであり、暗号化された jar パッケージは標準の java -jar コマンドを通じて引き続き実行されます。
暗号化されたアプリケーションを解読する
まず、暗号化された jar ファイルを実行し、次に JDK の bin ディレクトリを検索すると、jshdb ファイルが見つかるはずです。
jhsdb hsdbを実行し、HotSpotデバッガーを開きます。Windowsの場合、管理者として実行する必要があるかもしれません。ファイルをクリックしてHotSpotプロセスにアタッチします...
ps aux | を使用します。 Linux システムでは grep java コマンドを使用し、Windows システムではタスク マネージャーを通じてプロセス PID を見つけます。以下のダイアログボックスにプロセス PID を入力します。
正常に添付した後、[ツール] -> [クラス ブラウザ] をクリックします
クラス Browser には、ロードされたすべてのクラスに関する情報が含まれています。com.example を検索すると、com.example の下にすべてのクラスが表示されます。
「com.example.TestWindow @0x0000…」をクリックします。そして「.classファイルの作成」をクリックします。
以前にjhsdbコマンドが実行されたディレクトリに移動すると、生成されたクラスファイルが表示されます