Javaライブラリの保護

GUIツールでJavaライブラリを保護する

Protector4Jフォルダに移動し、p4j-ui[.exe] を実行すると、以下のユーザーインターフェースが表示されます。

image-20241222183944773

macOSユーザーの場合は、通常のMacアプリケーションと同様にProtector4J.appをダブルクリックするだけです。

ログイン

既にライセンスを購入している場合は、右上のログインボタンをクリックしてユーザー情報を入力してください。ライセンスをお持ちでない場合でも、このツールを試用できます。

Javaライブラリ保護機能にはEnterpriseエディションが必要です。

アプリケーションタイプの選択

アプリケーションタイプページで「Java Library」ボタンをクリックしてください。

暗号化するjar/warファイルの選択

暗号化したいjar/warファイルを選択します。1つまたは複数のファイルを選択できます。

暗号化メソッドの指定

このページでは暗号化するメソッドを選択できます。

image-20241222111100288

右側の構造ディレクトリから保護が必要なクラスとメソッドを選択するか、以下の形式で保護が必要な項目を手動で入力できます。

# Protect a method
# Class name.method name&method signature
Hello.hello&()V
# Protect all methods under the class
# Directly input the class name
Hello

除外する内容も同じ形式でItems to excludeに入力できます。

CLIツールでJavaライブラリを保護する

構成ファイル

CLIツールはタスクファイルをパラメータとして指定する必要があります。

protector4j/task-templatesフォルダに移動し、java-lib-task.ymlを見つけてコピーし、変更してください。

# The jar files that need to be encrypted
jarFiles: []

# Protect a method: MethodName&MethodSignature, like io.test.Hello.hello&()V
# Protect all methods in a Class: ClassName, like io.test.Hello
itemsToProtect: []

# Exclude items that are not encrypted in the same format as itemsToProtect.
itemsToExclude: []


# The output folder
outputFolder: ''

# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true

暗号化タスクの実行

Protector4Jフォルダに移動して以下のコマンドを実行してください。

LinuxまたはmacOS

macOSユーザーの場合、CLIツールは/Applictions/Protector4J.app/Contents/protector4j-macにあります。

./p4j -t java-lib -f path-of-task-file -u email -p password

Windows

p4j -t java-lib -f path-of-task-file -u email -p password

p4j --helpを実行して詳細なパラメータを確認できます。

暗号化の結果

Javaアプリケーション全体の暗号化とは異なり、Javaライブラリの暗号化は特定のメソッドを対象とします。暗号化完了後、選択したメソッドはネイティブコードに変換され、標準JREと組み合わせて使用できます。ユーザーがクラックする必要がある場合、バイトコードレベルではなくバイナリレベルで行う必要があり、クラッキングの難易度が大幅に上がります。

暗号化前

image-20250204115631030

暗号化後

image-20250204115731661

暗号化完了後、Mainメソッドはネイティブメソッドに変換されます。

制限事項

  1. try-catchコードブロックはサポートされていません。
  2. Spring Bootパッケージ化されたjarファイルはサポートされていません。
  3. warファイルはサポートされていません。

デモアプリケーション

現在、Javaライブラリ暗号化機能は無料ユーザーの試用をサポートしていません。このデモアプリケーションをダウンロードしてJavaライブラリ暗号化の効果を確認できます。これはSwingアプリケーションプログラムで、java -jar swingapp.jarで実行できます。メイン関数はネイティブメソッドに変換されています。デコンパイラツールで確認できます!

暗号化されていないアプリケーション

swing-plain.jar

暗号化されたアプリケーション

swing-encrypted.jar