🍵
Docker環境でJavaをデコンパイルする。
Windows11のDocker環境上でJava Decompiler(https://github.com/eikendev/java-decompiler)を使ってjarをデコンパイルします。
※以下のJavaのデコンパイルツールが使われています。
- CFR
- Fernflower
- Krakatau
- Procyon
環境
Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.29.0
Visual Studio Code
1.docker runコマンドで実行する場合
①フォルダ構成
以下のフォルダ構成で実行します。
java-deco # ルート(名前は任意)
├─infiles # デコンパイルするjarを格納
│ └xxx.jar
├─libfiles # 参照しているjarを格納(空でok)
└─outfiles # デコンパイル後のファイルが格納される
②作業フォルダ作成
以下のコマンドを実行し、作業フォルダを作成します。
PowerShell
mkdir infiles ;`
mkdir libfiles ;`
mkdir outfiles
③デコンパイル実行
以下のコマンドを実行し、Dockerのコンテナを起動します。コンテナが起動するとデコンパイルが実行され、outfiles
にデコンパイルツール毎(CFRなど)のjavaのモジュールが出力されます。
PowerShell
docker run --rm `
-v $PWD/infiles:/infiles `
-v $PWD/outfiles:/outfiles `
-v $PWD/libfiles:/libfiles `
ghcr.io/eikendev/java-decompiler:latest
2.docker composeコマンドで実行する場合
以下のフォルダ構成で実行します。
java-deco # ルート(名前は任意)
├─infiles # デコンパイルするjarを格納
│ └xxx.jar
├─libfiles # 参照しているjarを格納(空でok)
├─outfiles # デコンパイル後のファイルが格納される
└─compose.yaml
②作業フォルダ・ファイル作成
以下のコマンドを実行し、作業フォルダ・ファイルを作成します。
PowerShell
mkdir infiles ;`
mkdir libfiles ;`
mkdir outfiles ;`
New-Item compose.yaml
code compose.yaml
compose.yaml
services:
javad:
image: ghcr.io/eikendev/java-decompiler:latest
volumes:
- ./infiles:/infiles
- ./libfiles:/libfiles
- ./outfiles:/outfiles
③デコンパイル実行
以下のコマンドを実行し、Dockerのコンテナを起動します。コンテナが起動するとデコンパイルが実行され、outfiles
にデコンパイルツール毎(CFRなど)のjavaのモジュールが出力されます。
PowerShell
docker compose up -d
Discussion