jhsdb(HotSpotデバッガ)を使用した暗号化Javaアプリケーションのクラッキング
Javaコード保護のソリューションの1つとして、クラスファイル暗号化またはjarファイル暗号化があります。このタイプのソリューションは、自作のローダーを通じて暗号化されたクラスファイルまたはjarファイルを読み込みますが、JVMのアタッチメカニズムの存在により、JDK付属のツールで簡単にクラッキングでき、意味がありません。
サンプルアプリケーション
以下はシンプルなSwingウィンドウとボタンを持つサンプルアプリケーションです。 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 Debuggerを開きます。Windowsの場合は管理者として実行する必要がある場合があります。Fileをクリックし、Attach to HotSpot process…を選択します。

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

アタッチが成功したら、Tools->Class Browserをクリックします。

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

com.example.TestWindow @0x0000….をクリックし、「Create .class File」をクリックします。

jhsdbコマンドを実行したディレクトリにcdすると、生成されたクラスファイルを確認できます。

Luytenまたはjadxでクラスファイルを開くと、デコンパイルされたコードを確認できます。
