jhsdb(ホットスポットデバッガ)を使用して暗号化されたJavaアプリケーションをクラックする

Java コード保護の 1 つの解決策は、クラス ファイルの暗号化または jar ファイルの暗号化です。このタイプのソリューションは、暗号化されたクラス ファイルまたは jar ファイルを自己定義のローダーを通じてロードしますが、JVM のアタッチ メカニズムが存在するために役に立たず、JDK に付属のツールで簡単に解読できます。

サンプルアプリケーション

以下は、単純なスイング ウィンドウとボタンを備えたサンプル アプリケーションです。 https://github.com/3-keys/test-swing-app

img

アプリケーションの暗号化

Eclipse で実行可能な jar ファイルをエクスポートし、暗号化ツールを使用して jar ファイルを暗号化します。暗号化後の jar ファイルの構造は次のようになります。

img

test-swing-app.jar は暗号化された jar ファイル データであり、Launcher クラスはこのツールのカスタム ロード クラスであり、暗号化された jar パッケージは標準の java -jar コマンドを通じて引き続き実行されます。

暗号化されたアプリケーションを解読する

まず、暗号化された jar ファイルを実行し、次に JDK の bin ディレクトリを検索すると、jshdb ファイルが見つかるはずです。

1_nsxbwNJrGJB4mpzsQv55VA

jhsdb hsdbを実行し、HotSpotデバッガーを開きます。Windowsの場合、管理者として実行する必要があるかもしれません。ファイルをクリックしてHotSpotプロセスにアタッチします...

img

ps aux | を使用します。 Linux システムでは grep java コマンドを使用し、Windows システムではタスク マネージャーを通じてプロセス PID を見つけます。以下のダイアログボックスにプロセス PID を入力します。

img

正常に添付した後、[ツール] -> [クラス ブラウザ] をクリックします

img

クラス Browser には、ロードされたすべてのクラスに関する情報が含まれています。com.example を検索すると、com.example の下にすべてのクラスが表示されます。

img

「com.example.TestWindow @0x0000…」をクリックします。そして「.classファイルの作成」をクリックします。

img

以前にjhsdbコマンドが実行されたディレクトリに移動すると、生成されたクラスファイルが表示されます

img

使用するルイテン またはjadxクラスファイルを開くと、逆コンパイルされたコードが表示されます

img