# APK decompilers {{#include ../../banners/hacktricks-training.md}} **各ツールの詳細については、** [**https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr**](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr) **の元の投稿を確認してください。** ### [JD-Gui](https://github.com/java-decompiler/jd-gui) 先駆的なGUI Javaデコンパイラである**JD-Gui**は、APKファイル内のJavaコードを調査することを可能にします。使い方は簡単で、APKを取得したら、JD-Guiで開いてコードを確認するだけです。 ### [Jadx](https://github.com/skylot/jadx) **Jadx**は、AndroidアプリケーションからJavaコードをデコンパイルするためのユーザーフレンドリーなインターフェースを提供します。異なるプラットフォームでの使いやすさから推奨されています。 - GUIを起動するには、binディレクトリに移動して実行します: `jadx-gui` - コマンドラインで使用するには、APKをデコンパイルします: `jadx app.apk` - 出力ディレクトリを指定したり、デコンパイルオプションを調整するには: `jadx app.apk -d --no-res --no-src --no-imports` ### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool) **GDA**は、Windows専用のツールで、Androidアプリのリバースエンジニアリングに広範な機能を提供します。WindowsシステムにGDAをインストールして実行し、APKファイルをロードして分析します。 ### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases) **Bytecode-Viewer**を使用すると、複数のデコンパイラを使用してAPKファイルを分析できます。ダウンロード後、Bytecode-Viewerを実行し、APKをロードして、同時分析のために使用したいデコンパイラを選択します。 ### [Enjarify](https://github.com/Storyyeller/enjarify) **Enjarify**は、DalvikバイトコードをJavaバイトコードに変換し、Java分析ツールがAndroidアプリケーションをより効果的に分析できるようにします。 - Enjarifyを使用するには、次のように実行します: `enjarify app.apk` これにより、提供されたAPKのJavaバイトコードが生成されます。 ### [CFR](https://github.com/leibnitz27/cfr) **CFR**は、最新のJava機能をデコンパイルすることができます。次のように使用します: - 標準デコンパイルの場合: `java -jar ./cfr.jar "app.jar" --outputdir "output_directory"` - 大きなJARファイルの場合、JVMメモリ割り当てを調整します: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"` ### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine) **Fernflower**は、分析デコンパイラで、ソースからビルドする必要があります。ビルド後: - JARファイルをデコンパイルします: `java -jar ./fernflower.jar "app.jar" "output_directory"` その後、生成されたJARから`.java`ファイルを`unzip`を使用して抽出します。 ### [Krakatau](https://github.com/Storyyeller/Krakatau) **Krakatau**は、特に外部ライブラリを扱う際に、デコンパイルに対する詳細な制御を提供します。 - Krakatauを使用するには、標準ライブラリパスとデコンパイルするJARファイルを指定します: `./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"` ### [procyon](https://github.com/mstrobel/procyon) **procyon**を使用して簡単にデコンパイルするには: - 指定したディレクトリにJARファイルをデコンパイルします: `procyon -jar "app.jar" -o "output_directory"` ### [frida-DEXdump](https://github.com/hluwa/frida-dexdump) このツールは、メモリ内で実行中のAPKのDEXをダンプするために使用できます。これは、アプリケーションがメモリ内で実行されている間に削除される静的難読化を打破するのに役立ちます。 {{#include ../../banners/hacktricks-training.md}}