JADX
jadx -DexからJavaへの逆コンパイラ
AndroidのDexファイルやApkファイルからJavaのソースコードを生成するためのコマンドラインとGUIツール
ほとんどの場合、 jadxはコードの100%をすべて逆コンパイルできないため、エラーが発生することに注意してください。回避策については、トラブルシューティングガイドを確認してください
Main features:
- APK,dex,aar,aab,zip ファイルから Dalvik バイトコードを java クラスにデコンパイルする。
AndroidManifest.xml
およびその他のリソースをresources.arsc
します- deobfuscator included
jadx-gui features:
- デコンパイルされたコードをハイライトして表示する
- 宣言にジャンプする
- find usage
- フルテキスト検索
- smaliデバッガー、セットアップと使用法についてwikiページを確認してください
Jadx-guiキーバインディングはここにあります
ここで実際のこれらの機能を参照してください:jadx-gui機能の概要
Download
zipファイルをダウンロードして解凍した後、 bin
ディレクトリに移動して次のコマンドを実行します。
jadx
-コマンドラインバージョンjadx-gui
-UIバージョン
Windowsでは、ダブルクリックして .bat
ファイルを実行します
注: Java11以降の64ビットバージョンがインストールされていることを確認してください。Windowsの場合は、oracle.comからダウンロードできます(x64インストーラを選択)。
Install
- Arch linux
sudo pacman -S jadx
- macOS
brew install jadx
jadxをライブラリとして使用する
あなたはあなたのJavaプロジェクトでjadxを使うことができます、wikiページで詳細をチェックしてください
ソースからのビルド
JDK 8 以上がインストールされている必要があります。
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist
(Windowsでは、。 gradlew.bat
の代わりに ./gradlew
を使用します)
jadxを実行するためのスクリプトは、 build/jadx/bin
に配置され、build build/jadx-<version>.zip
にもパックされます。
Usage
jadx[-gui] [options] <input files> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab)
options:
-d, --output-dir-出力ディレクトリ
-ds, --output-dir-src-ソースの出力ディレクトリ
-dr, --output-dir-res-リソースの出力ディレクトリ
-r, --no-res-リソースをデコードしません
-s, --no-src-ソースコードを逆コンパイルしません
--single-class-単一のクラス、フルネーム、rawまたはエイリアスを逆コンパイルします
--single-class-output-単一のクラスを逆コンパイルする場合の書き込み用のファイルまたはディレクトリ
--output-format-「java」または「json」にすることができます。デフォルト:java
-e, --export-gradle--androidgradleプロジェクトとして保存
-j, --threads-count-処理スレッド数、デフォルト:4
-m, --decompilation-mode-コード出力モード:
'auto' - trying best options (default)
'restructure' - restore code structure (normal java code)
'simple' - simplified instructions (linear, with goto's)
'fallback' - raw instructions without modifications
--show-bad-code - show inconsistent code (incorrectly decompiled)
--no-imports - disable use of imports, always write entire package name
--no-debug-info - disable debug info
--add-debug-lines - add comments with debug line numbers if available
--no-inline-anonymous - disable anonymous classes inline
--no-inline-methods - disable methods inline
--no-replace-consts - don't replace constant value with matching constant field
--escape-unicode-文字列内の非ラテン文字をエスケープします(\ uを使用)
--respect-bytecode-access-modifiers-元のアクセス修飾子を変更しないでください
--deobf-難読化解除をアクティブにします
--deobf-min-名前の最小の長さ、短い場合は名前が変更され、デフォルト:3
--deobf-max-名前の最大長、長い場合は名前が変更され、デフォルト:64
--deobf-cfg-file --deobfuscationマップファイル、デフォルト:「。jobf」拡張子を持つ入力ファイルと同じディレクトリと名前
--deobf-cfg-file-mode-ハンドルの難読化解除マップファイルのモードを設定します。
'read' - read if found, don't save (default)
'read-or-save' - read if found, save otherwise (don't overwrite)
'overwrite' - don't read, always save
'ignore' - don't read and don't save
--deobf-rewrite-cfg - set '--deobf-cfg-file-mode'から'overwrite'(非推奨)
--deobf-use-sourcename-ソースファイル名をクラス名エイリアスとして使用します
--deobf-parse-kotlin-metadata-kotlinメタデータをクラス名とパッケージ名に解析します
--use-kotlin-methods-for-var-names-kotlin組み込みメソッドを使用して、変数の名前を変更します。値:無効、適用、適用と非表示、デフォルト:適用
--rename-flags-オプションを修正します(カンマ区切りのリスト):
'case' - fix case sensitivity issues (according to --fs-case-sensitive option),
'valid' - rename java identifiers to make them valid,
'printable' - remove non-printable chars from identifiers,
or single 'none' - to disable all renames
or single 'all' - to enable all (default)
--fs-case-sensitive-ファイルシステムを大文字と小文字を区別して扱います。デフォルトではfalseです。
--cfg-メソッド制御フローグラフをドットファイルに保存します
--raw-cfg --saveメソッドの制御フローグラフ(raw命令を使用)
-f, --fallback --set'--decompilation-mode' to'fallback'(非推奨)
--use-dx-dx/d8を使用してJavaバイトコードを変換します
--comments-level-コードコメントレベルを設定します。値:エラー、警告、情報、デバッグ、ユーザーのみ、なし、デフォルト:情報
--log-level-ログレベルを設定します。値:quiet、progress、error、warn、info、debug、default:progress
-v, --verbose --verbose出力(--log-levelをDEBUGに設定)
-q, --quiet-出力をオフにします(--log-levelをQUIETに設定します)
--version-jadxバージョンを印刷します
-h, --help-このヘルプを印刷します
Plugin options (-P<name>=<value>):
1) dex-input (Load .dex and .apk files)
-Pdex-input.verify-checksum - Verify dex file checksum before load, values: [yes, no], default: yes
2) java-convert (Convert .jar and .class files to dex)
-Pjava-convert.mode - Convert mode, values: [dx, d8, both], default: both
-Pjava-convert.d8-desugar - Use desugar in d8, values: [yes, no], default: no
Examples:
jadx -d out classes.dex
jadx --rename-flags "none" classes.dex
jadx --rename-flags "valid, printable" classes.dex
jadx --ログレベルのエラーapp.apk
jadx -Pdex-input.verify-checksum=no app.apk
これらのオプションは、コマンドラインから実行するjadx-guiでも機能し、環境設定ダイアログのオプションを上書きします。
Troubleshooting
wikiページのトラブルシューティングQ&Aを確認してください
Contributing
このプロジェクトを支援するために、あなたは
- あなたにとって重要な新機能/最適化についての考えを投稿してください。
- 逆コンパイルの問題を送信します。続行する前に読んでください:未解決の問題
- プルリクエストを開きます。次のルールに従ってください。プルリクエストプロセス
Apache2.0ライセンスの下でライセンス供与