-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update version to latest stable JADX release
- Loading branch information
1 parent
4294b94
commit 0f298b7
Showing
86 changed files
with
1,797 additions
and
1,985 deletions.
There are no files selected for viewing
19 changes: 19 additions & 0 deletions
19
jadx-with-jadxecute/.github/ISSUE_TEMPLATE/decompilation-error.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
name: Decompilation error | ||
about: Create a report to help us improve jadx decompiler | ||
title: "[core]" | ||
labels: Core, bug | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Checks before report** | ||
- check [Troubleshooting Q&A](https://github.com/skylot/jadx/wiki/Troubleshooting-Q&A) section on wiki | ||
- search existing issues by exception message | ||
|
||
**Describe error** | ||
- full name of method or class with error | ||
- full java stacktrace (no need to copy method fallback code (commented pseudocode)) | ||
- **IMPORTANT!** attach or provide link to apk file (double check apk version) | ||
|
||
**Note**: GitHub don't allow attach files with `.apk` extension, but you can change extension by adding `.zip` at the end :) |
10 changes: 10 additions & 0 deletions
10
jadx-with-jadxecute/.github/ISSUE_TEMPLATE/feature-request.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
name: Feature Request | ||
about: Suggest an idea for jadx | ||
title: "[feature]" | ||
labels: new feature | ||
assignees: '' | ||
|
||
--- | ||
|
||
*Describe your idea:* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
version: 2 | ||
updates: | ||
# Set update schedule for GitHub Actions | ||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
:exclamation: Please review the [guidelines for contributing](https://github.com/skylot/jadx/blob/master/CONTRIBUTING.md#Pull-Request-Process) | ||
|
||
### Description | ||
Please describe your pull request. | ||
Reference issue it fixes. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
name: Build Artifacts | ||
|
||
on: | ||
push: | ||
branches: [ master, build-test ] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'adopt' | ||
java-version: 8 | ||
|
||
- name: Set jadx version | ||
run: | | ||
JADX_LAST_TAG=$(git describe --abbrev=0 --tags) | ||
JADX_VERSION="${JADX_LAST_TAG:1}.$GITHUB_RUN_NUMBER-${GITHUB_SHA:0:8}" | ||
echo "JADX_VERSION=$JADX_VERSION" >> $GITHUB_ENV | ||
- uses: burrunan/gradle-cache-action@v1 | ||
name: Build with Gradle | ||
env: | ||
TERM: dumb | ||
with: | ||
arguments: clean dist copyExe | ||
|
||
- name: Save bundle artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ format('jadx-{0}', env.JADX_VERSION) }} | ||
# Waiting fix for https://github.com/actions/upload-artifact/issues/39 to upload zip file | ||
# Upload unpacked files for now | ||
path: build/jadx/**/* | ||
if-no-files-found: error | ||
retention-days: 30 | ||
|
||
- name: Save exe artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ format('jadx-gui-{0}-no-jre-win.exe', env.JADX_VERSION) }} | ||
path: build/*.exe | ||
if-no-files-found: error | ||
retention-days: 30 | ||
|
||
build-win-bundle: | ||
runs-on: windows-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up JDK | ||
uses: oracle-actions/setup-java@v1 | ||
with: | ||
release: 17 | ||
|
||
- name: Print Java version | ||
shell: bash | ||
run: java -version | ||
|
||
- name: Set jadx version | ||
shell: bash | ||
run: | | ||
JADX_LAST_TAG=$(git describe --abbrev=0 --tags) | ||
JADX_VERSION="${JADX_LAST_TAG:1}.$GITHUB_RUN_NUMBER-${GITHUB_SHA:0:8}" | ||
echo "JADX_VERSION=$JADX_VERSION" >> $GITHUB_ENV | ||
- uses: gradle/gradle-build-action@v2 | ||
name: Build with Gradle | ||
env: | ||
TERM: dumb | ||
with: | ||
arguments: clean dist -PbundleJRE=true | ||
|
||
- name: Save exe bundle artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ format('jadx-gui-{0}-with-jre-win', env.JADX_VERSION) }} | ||
path: jadx-gui/build/*-with-jre-win/* | ||
if-no-files-found: error | ||
retention-days: 30 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
name: Build Test | ||
|
||
on: | ||
push: | ||
branches: [ master, build-test ] | ||
pull_request: | ||
branches: [ master ] | ||
|
||
jobs: | ||
tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'adopt' | ||
java-version: 8 | ||
|
||
- uses: burrunan/gradle-cache-action@v1 | ||
name: Build with Gradle | ||
env: | ||
TERM: dumb | ||
with: | ||
arguments: clean build dist copyExe --warning-mode=all |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
name: "CodeQL" | ||
|
||
on: | ||
push: | ||
branches: [master] | ||
pull_request: | ||
# The branches below must be a subset of the branches above | ||
branches: [master] | ||
schedule: | ||
- cron: '0 9 * * 5' | ||
|
||
jobs: | ||
analyze: | ||
name: Analyze | ||
runs-on: ubuntu-latest | ||
permissions: | ||
actions: read | ||
contents: read | ||
security-events: write | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
language: ['java'] | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Initialize CodeQL | ||
uses: github/codeql-action/init@v2 | ||
with: | ||
queries: +security-extended | ||
languages: ${{ matrix.language }} | ||
|
||
# Don't build tests in jadx-core also skip tests execution and checkstyle tasks | ||
- run: | | ||
./gradlew clean build -x checkstyleTest -x checkstyleMain -x test -x ':jadx-core:testClasses' | ||
- name: Perform CodeQL Analysis | ||
uses: github/codeql-action/analyze@v2 |
10 changes: 10 additions & 0 deletions
10
jadx-with-jadxecute/.github/workflows/gradle-wrapper-validation.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
name: "Validate Gradle Wrapper" | ||
on: [push] | ||
|
||
jobs: | ||
validation: | ||
name: "Validation" | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: gradle/wrapper-validation-action@v1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
<img src="https://raw.githubusercontent.com/skylot/jadx/master/jadx-gui/src/main/resources/logos/jadx-logo.png" width="64" align="left" /> | ||
|
||
## JADX | ||
|
||
[![Build status](https://github.com/skylot/jadx/workflows/Build/badge.svg)](https://github.com/skylot/jadx/actions?query=workflow%3ABuild) | ||
![GitHub contributors](https://img.shields.io/github/contributors/skylot/jadx) | ||
![GitHub all releases](https://img.shields.io/github/downloads/skylot/jadx/total) | ||
![GitHub release (latest by SemVer)](https://img.shields.io/github/downloads/skylot/jadx/latest/total) | ||
![Latest release](https://img.shields.io/github/release/skylot/jadx.svg) | ||
[![Maven Central](https://img.shields.io/maven-central/v/io.github.skylot/jadx-core)](https://search.maven.org/search?q=g:io.github.skylot%20AND%20jadx) | ||
[![License](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html) | ||
|
||
**jadx** - Dex to Java decompiler | ||
|
||
Command line and GUI tools for producing Java source code from Android Dex and Apk files | ||
|
||
:exclamation::exclamation::exclamation: Please note that in most cases **jadx** can't decompile all 100% of the code, so errors will occur. Check [Troubleshooting guide](https://github.com/skylot/jadx/wiki/Troubleshooting-Q&A#decompilation-issues) for workarounds | ||
|
||
**Main features:** | ||
- decompile Dalvik bytecode to java classes from APK, dex, aar, aab and zip files | ||
- decode `AndroidManifest.xml` and other resources from `resources.arsc` | ||
- deobfuscator included | ||
|
||
**jadx-gui features:** | ||
- view decompiled code with highlighted syntax | ||
- jump to declaration | ||
- find usage | ||
- full text search | ||
- smali debugger, check [wiki page](https://github.com/skylot/jadx/wiki/Smali-debugger) for setup and usage | ||
|
||
Jadx-gui key bindings can be found [here](https://github.com/skylot/jadx/wiki/JADX-GUI-Key-bindings) | ||
|
||
See these features in action here: [jadx-gui features overview](https://github.com/skylot/jadx/wiki/jadx-gui-features-overview) | ||
|
||
<img src="https://user-images.githubusercontent.com/118523/142730720-839f017e-38db-423e-b53f-39f5f0a0316f.png" width="700"/> | ||
|
||
### Download | ||
- release | ||
from [github: ![Latest release](https://img.shields.io/github/release/skylot/jadx.svg)](https://github.com/skylot/jadx/releases/latest) | ||
- latest [unstable build ![GitHub commits since tagged version (branch)](https://img.shields.io/github/commits-since/skylot/jadx/latest/master)](https://nightly.link/skylot/jadx/workflows/build-artifacts/master) | ||
|
||
After download unpack zip file go to `bin` directory and run: | ||
- `jadx` - command line version | ||
- `jadx-gui` - UI version | ||
|
||
On Windows run `.bat` files with double-click\ | ||
**Note:** ensure you have installed Java 11 or later 64-bit version. | ||
For Windows, you can download it from [oracle.com](https://www.oracle.com/java/technologies/downloads/#jdk17-windows) (select x64 Installer). | ||
|
||
### Install | ||
1. Arch linux ![Arch Linux package](https://img.shields.io/archlinux/v/community/any/jadx?label=) | ||
```bash | ||
sudo pacman -S jadx | ||
``` | ||
2. macOS ![homebrew version](https://img.shields.io/homebrew/v/jadx?label=) | ||
```bash | ||
brew install jadx | ||
``` | ||
3. [Flathub ![Flathub](https://img.shields.io/flathub/v/com.github.skylot.jadx?label=)](https://flathub.org/apps/details/com.github.skylot.jadx) | ||
```bash | ||
flatpak install flathub com.github.skylot.jadx | ||
``` | ||
|
||
### Use jadx as a library | ||
You can use jadx in your java projects, check details on [wiki page](https://github.com/skylot/jadx/wiki/Use-jadx-as-a-library) | ||
|
||
### Build from source | ||
JDK 8 or higher must be installed: | ||
``` | ||
git clone https://github.com/skylot/jadx.git | ||
cd jadx | ||
./gradlew dist | ||
``` | ||
(on Windows, use `gradlew.bat` instead of `./gradlew`) | ||
Scripts for run jadx will be placed in `build/jadx/bin` | ||
and also packed to `build/jadx-<version>.zip` | ||
### Usage | ||
``` | ||
jadx[-gui] [options] <input files> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab) | ||
options: | ||
-d, --output-dir - output directory | ||
-ds, --output-dir-src - output directory for sources | ||
-dr, --output-dir-res - output directory for resources | ||
-r, --no-res - do not decode resources | ||
-s, --no-src - do not decompile source code | ||
--single-class - decompile a single class, full name, raw or alias | ||
--single-class-output - file or dir for write if decompile a single class | ||
--output-format - can be 'java' or 'json', default: java | ||
-e, --export-gradle - save as android gradle project | ||
-j, --threads-count - processing threads count, default: 4 | ||
-m, --decompilation-mode - code output 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-finally - don't extract finally block | ||
--no-replace-consts - don't replace constant value with matching constant field | ||
--escape-unicode - escape non latin characters in strings (with \u) | ||
--respect-bytecode-access-modifiers - don't change original access modifiers | ||
--deobf - activate deobfuscation | ||
--deobf-min - min length of name, renamed if shorter, default: 3 | ||
--deobf-max - max length of name, renamed if longer, default: 64 | ||
--deobf-cfg-file - deobfuscation map file, default: same dir and name as input file with '.jobf' extension | ||
--deobf-cfg-file-mode - set mode for handle deobfuscation map file: | ||
'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-use-sourcename - use source file name as class name alias | ||
--deobf-parse-kotlin-metadata - parse kotlin metadata to class and package names | ||
--deobf-res-name-source - better name source for resources: | ||
'auto' - automatically select best name (default) | ||
'resources' - use resources names | ||
'code' - use R class fields names | ||
--use-kotlin-methods-for-var-names - use kotlin intrinsic methods to rename variables, values: disable, apply, apply-and-hide, default: apply | ||
--rename-flags - fix options (comma-separated list of): | ||
'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 - treat filesystem as case sensitive, false by default | ||
--cfg - save methods control flow graph to dot file | ||
--raw-cfg - save methods control flow graph (use raw instructions) | ||
-f, --fallback - set '--decompilation-mode' to 'fallback' (deprecated) | ||
--use-dx - use dx/d8 to convert java bytecode | ||
--comments-level - set code comments level, values: error, warn, info, debug, user-only, none, default: info | ||
--log-level - set log level, values: quiet, progress, error, warn, info, debug, default: progress | ||
-v, --verbose - verbose output (set --log-level to DEBUG) | ||
-q, --quiet - turn off output (set --log-level to QUIET) | ||
--version - print jadx version | ||
-h, --help - print this help | ||
|
||
Plugin options (-P<name>=<value>): | ||
1) dex-input: Load .dex and .apk files | ||
- dex-input.verify-checksum - verify dex file checksum before load, values: [yes, no], default: yes | ||
2) java-convert: Convert .class, .jar and .aar files to dex | ||
- java-convert.mode - convert mode, values: [dx, d8, both], default: both | ||
- java-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 --log-level ERROR app.apk | ||
jadx -Pdex-input.verify-checksum=no app.apk | ||
``` | ||
These options also worked on jadx-gui running from command line and override options from preferences dialog | ||
### Troubleshooting | ||
Please check wiki page [Troubleshooting Q&A](https://github.com/skylot/jadx/wiki/Troubleshooting-Q&A) | ||
### Contributing | ||
To support this project you can: | ||
- Post thoughts about new features/optimizations that important to you | ||
- Submit decompilation issues, please read before proceed: [Open issue](CONTRIBUTING.md#Open-Issue) | ||
- Open pull request, please follow these rules: [Pull Request Process](CONTRIBUTING.md#Pull-Request-Process) | ||
--------------------------------------- | ||
*Licensed under the Apache 2.0 License* |
Oops, something went wrong.