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

Javaコード保護の解決策の一つとして、クラスファイル暗号化またはJARファイル暗号化があります。この種のソリューションでは、暗号化されたクラスファイルまたはJARファイルを独自定義のローダーを介して読み込みますが、JVMのAttachメカニズムが存在するため、このローダーは役に立たず、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 Debuggerを開きます。Windowsの場合は管理者として実行する必要があるかもしれません。ファイルをクリックして、HotSpotプロセスにアタッチ...を選択します。

img

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

img

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

img

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

img

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

img

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

img

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

img