jhsdb(HotSpotデバッガ)を使用した暗号化Javaアプリケーションのクラッキング

Javaコード保護のソリューションの1つとして、クラスファイル暗号化またはjarファイル暗号化があります。このタイプのソリューションは、自作のローダーを通じて暗号化されたクラスファイルまたはjarファイルを読み込みますが、JVMのアタッチメカニズムの存在により、JDK付属のツールで簡単にクラッキングでき、意味がありません。

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

以下はシンプルなSwingウィンドウとボタンを持つサンプルアプリケーションです。 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の場合は管理者として実行する必要がある場合があります。Fileをクリックし、Attach to HotSpot process…を選択します。

img

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

img

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

img

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

img

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

img

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

img

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

img