Skip to content

Releases: skylot/jadx

1.5.1

11 Nov 22:53
c4c3d42
Compare
Choose a tag to compare

Main features

Core:

  • Support restore of switch over string
  • Adding automatic patching for semi-corrupted APKs (PR #2298)
  • Resource decoding support new fields

GUI:

  • Pin tabs (PR #2230)
  • Quick Tabs (PR #2241)
  • Limit search to a package (PR #2284)
  • Add button to go to Application class (#2208)(PR #2213)
  • Export resource/class/package (PR #2228)
  • Smali code folding (PR #2233)

All changes

Click to expand

Features

  • Move AAB support to separate plugin (PR #2165)

  • Allow to change config and cache dirs with env vars (#2159)

  • Support inner class contruction with outer instance (#2253)

  • Add the option to always use source file name as class name alias (PR #2287)

  • Support restore of switch over string (basic case)(#2288)

  • Adding automatic patching for semi-corrupted APKs (PR #2298)

  • Improve better name algorithm (PR #2299)

  • Allow to disable installed plugins (#2277)

  • Give ability to plugins to edit blocks before locking (PR #2336)

  • Add method to update all blocks related info in method (#2335)

  • [api] Add JadxArgs property to adjust xml security checks (#2291)

  • [api] Allow to get method code (#2305)

  • [cli] Add option to disable plugins (#2277)

  • [gui] Allow to check for unstable releases (PR #2200)

  • [gui] Add button to go to Application class (#2208)(PR #2213)

  • [gui] Export resource/class/package (PR #2228)

  • [gui] Pin tabs (PR #2230)

  • [gui] Smali code folding (PR #2233)

  • [gui] Quick Tabs Overhaul (PR #2241)

  • [gui] Limit search to a package (PR #2284)

  • [gui] Add button to go to Android Manifest (PR #2296)

  • [gui] Create Frida hooking snippet for all methods in the class (PR #2328)

  • [java-input] Support StackMapTable to get stack info for unvisited jumps (#2271)

  • [plugins] Get a main window reference as JFrame

  • [plugins] Get config and cache dirs for plugins

  • [plugins] Allow to set minimum required jadx version in plugin info (#2314)

  • [res] Improve error message for unsupported ResTable flags (PR #2266)

  • [res] Support 16-bit entry offsets (PR #2269)

  • [res] Support compact resource entries (#2268)

  • [res] Support grammar inflection flag in res config (#2270)

  • [res] Improve resource names (PR #2316)

Bug Fixes

  • Config dir was used instead cache dir

  • Improve exception handlers checks (#2086)

  • Make detailed var info deterministic (PR #2231)

  • Improve checking if methods are inline for FixAccessModifiers (PR #2235)

  • Don't rerun SSA transform in ConstructorVisitor (#2236)

  • Workaround to make method inline deterministic (#1089)

  • Improve inlining synthetic accessors (PR #2243)

  • Use correct approach to get prev block on path (#2239)

  • Handle quick return on branched constructor (#2240)

  • Improve switch out search in loop (#2246)

  • Improve checking of access modifiers for classes (PR #2251)

  • Improve checking of access modifiers for methods (PR #2252)

  • Improve try/catch temp edges injection (#2247)

  • Improve checking of access modifiers (PR #2255)

  • Improve 'continue' insertion for switch in loop (#2249)

  • Check if debug info offset is invalid (#1653)

  • Additional checks for class signature (#2272)

  • Do not add custom passes for fallback and simple modes (#2276)

  • Protect class deps from loading in different decompilation mode

  • Improve condition branch checks in loops (#2274)

  • Use type from new-instance if differ from constructor call (#2285)

  • Ignore debug lines hints if numbers was adjusted for method

  • Don't add same 'loaded from:' comment for inner classes

  • Improve switch out block search if all method exits are inside (#2264)

  • Improve checks for restore new filled array (#2289)

  • Use temp dir env var only in apps

  • Update reserved keywords (PR #2301)

  • Replace patched zip early in input files (#2302)

  • Add missing null check in codegen for classes generated by jadx

  • Clear temp root dir instead delete (#2312)

  • Fix default branch position in switch-over-string (PR #2331)

  • Prevent endless loop in pre header insertion mod (#2300)

  • Unwrap consts in switch-over-string (PR #2332)

  • Improve negation condition checks for switch over string (#2333)

  • Support "fall-through to default" case in switch-over-string (PR #2338)

  • Insert new filled array insn before first usage (#2340)

  • Fix primitive-to-primitive conversions (PR #2326)

  • [deobf] Update TLDs (PR#2320)

  • [gui] Show correct content of binary resources in hex view (#2160) (PR #2166)

  • [gui] Support filtering files with multiple extensions in file dialog (PR #2185)

  • [gui] Update Messages_zh_CN.properties (PR #2203, PR #2319)

  • [gui] Update russian translation (PR #2209)

  • [gui] Fix Xposed args code generation (PR #2212)

  • [gui] Horizontal scrolling in Linux (PR #2229)

  • [gui] Show folding actions in code popup menu (#2234)

  • [gui] Add VM flags to fix UI ghosting (#2225)

  • [gui] Trim trailing spaces in input files (#2244)

  • [gui] Trim also leading spaces in paths from file dialog (#2244)

  • [gui] Use correct translation in rename dialog (#2254)

  • [gui] Quick Tabs Optimization (PR #2242)

  • [gui] Merge full class name tokens for constructors (#2261)

  • [gui] Prevent UI stuck on class load (#2259)

  • [gui] Minor fixes for code jumps

  • [gui] Resolve old objects reference leak in TabsController

  • [gui] Prevent old refs leak in shortcuts controller

  • [gui] Send select tab event before code jump (#2292)

  • [gui] Update check fixed to match current artifact naming

  • [gui] Improve plugins preferences group

  • [gui] In settings row reduce space between description and value

  • [gui] Use another implementation for font dialog (#2310)

  • [gui] Load plugins settings in temp context without UI (#2206)

  • [gui] Use correct section filter in plugins list

  • [gui] Correct tabs filter in "Close others" tab action (#2330)

  • [launch4j] Do not overwrite Java heap configuration from applicationDefaultJvmArgs (PR #2218)

  • [mappings] Try to prevent mapping file reset on export exception, refactor and fix code to avoid NPE (#2220)(#2226)

  • [quark] Fix automated installation and check exit code of executed external commands (#2119)(PR #2216)

  • [res] Prevent duplication of ARSC entries (#2263)

  • [res] Don't rename resource entries when useRawResName = true (PR #2306)

  • [res] Update Android attrs to API 35 (PR #2318)

  • [smali-input] Compile one smali file at a time to avoid 64k limit (#2158)

  • [xml] Allow for non-standard attributes sizes and avoid index exceptions when decoding some strings (PR #2210)

  • [xml] AXML/Manifest parsing improvements (PR #2211)

New Contributors

Download files:

For system JRE the latest version is always preferred, download at oracle.com

1.5.0

20 Apr 18:47
f2ea641
Compare
Choose a tag to compare

Main features

  • Added support for:
    • Scripting, uses Kotlin, check short guide
    • External plugins, guide
      Both features in preview state, API is stable but limited (especially in UI customizations)
  • Jadx GUI:
    • Improved code cache, allow use common directory, view/delete exist caches in preferences
    • jadx-gui configuration moved into plain json files in system config directory
    • Allow to set custom shortcuts
    • Tabs drag and drop reorder support
    • Hex-viewer for binary asset files
    • Add 'go to main activity' action
  • Other:
    • Java 11+ is required now
    • Parse and use Kotlin metadata for renames
    • Add support for XApk files
    • Allow to move class to another package
    • Support jsr/ret opcodes (java-input)
  • A lot of bug fixes ... and regressions 🤣

Full Changelog: v1.4.7...v1.5.0

Download files:

For system JRE the latest version is always preferred, Java 11+ is required, download at oracle.com

1.4.7

20 Apr 15:45
fdf1705
Compare
Choose a tag to compare

Features

  • [core] Inline lambdas by instance field (#1800)
  • [plugins] Allow to load classes using input stream or byte array in jadx-input plugin (#1457)

Bug Fixes

  • [core] Restore missing type parameter declarations (#1800)
  • [core] Filter invalid chars in app name for gradle export (PR #1813)
  • [core] Correct args shift for instance invoke-custom (#1816)
  • [core] Additional checks to forbid inline of null consts (#1828)
  • [core] Use strict patterns for synthetic methods inline (#1829)
  • [res] Resolve manifest decoding error Expected strings start (#1797)(PR #1798)
  • [res] Handle RES_TABLE_TYPE_OVERLAY (#1748) (PR #1804)
  • [res] Parsing of sparse RES_TABLE_TYPE_TYPE and RES_TABLE_TYPE_STAGED_ALIAS chunks (#1806 #1803)(PR #1807)
  • [res] Resolve int hex attributes
  • [res] Resolve custom attributes
  • [res] Resolve declare-styleable atrributes
  • [res] Set empty parent for styles without a parent, remove duplicated code
  • [xml] Use parent attribute only for styles (PR #1815)
  • [gui] Search constant fields usage in all classes (#1801)
  • [gui] Redirect jump from search for inlined classes
  • [gui] Show skipped resources count during search (#1808)
  • [gui] Update Messages_zh_CN.properties (PR #1811)
  • [debugger] Process UI updates in correct thread (#1796)
  • [cli] Make enum CLI arguments match documented format (PR #1787)

Full Changelog: v1.4.6...v1.4.7

Download files:

For system JRE the latest version is always preferred, download at oracle.com

1.4.6

20 Feb 11:33
158fc2f
Compare
Choose a tag to compare

Features

  • [core] Support polymorphic invoke (#384)(#1777)
  • [gui] Add alternative file open dialog (#1709)
  • [gui] Add native libs info to summary (#1717)
  • [gui] Add Russian Translation (PR #1744)
  • [gui] Added keyboard shortcut ctrl+w to close tab (#1765)(PR #1766)

Bug Fixes

  • [core] Check full signature for search method override (#1743)
  • [core] Escape special characters in AAB resources (PR #1747)
  • [core] Allow altMetafactory method in lambda call site (#1760)
  • [core] Resolve JavaNode caching issues (#1775)
  • [core] Output unknown invoke-custom as polymorphic call (#1760)
  • [core] Process manifest before other resources (#1740)
  • [gui] Disable shell folders in file open dialog (#1709)
  • [gui] Correct html disabling in search results
  • [gui] Try to handle exception in RSTA.getPreferredSize() (#1712)
  • [gui] Show all code sources in summary (remove dex filter) (#1716)
  • [gui] Change callMethodName of constructors in Frida action (#1714)(PR #1715)
  • [gui] Add template for constructor and void methods to Frida snippet (#1714)
  • [gui] Hi-dpi main window initial size (#1728)(PR #1729)
  • [gui] Correct html render in comments search results
  • [gui] Resolve exception in smali method writer (#1739)(PR #1745)
  • [gui] Improve smali disasm method param write (#1739)
  • [gui] Make bytecode output closer to smali (#1739)
  • [gui] Quick fix for duplicate/overlapping logcat windows (#1752)(PR #1761)
  • [gui] Allow html in JVariable to render renaming of variables correctly (#1769)(PR #1770)
  • [gui] Print the renamed function name in a frida snippet log (#1772)(PR #1773)
  • [gui] Split tabs loading to prevent ui dead lock

New Contributors

Full Changelog: v1.4.5...v1.4.6

Download files:

For system JRE the latest version is always preferred, download at oracle.com

1.4.5

20 Oct 15:53
6844a46
Compare
Choose a tag to compare

Features

  • [gui] Option for search results count per page (#1652)
  • [debugger] Add logcat output (#1411)(PR #1666)

Bug Fixes

  • Don't rename bridged overridden methods (#1672)
  • Don't mark constructor for inline if anonymous class inline is disabled (#1680)
  • Handle possible concurrent exception in method codegen (#1685)
  • Correct fix for all use places of incompatible primitives (#1688)
  • Improve logging messages for zip security errors (#750)(PR #1698)
  • Improve ternary inline, resolve more enum cases (#1686)
  • Restore enum class with custom code in static init (#1699)
  • Handle empty block at end of else-if chain (#1674)
  • [res] Implemented parsing RES_TABLE_TYPE_LIBRARY chunks (#1663)(PR #1664)
  • [debugger] Migrate to fixed jdwp library fork (#1471)
  • [gui] Multi-threading issue in DebugController fixed (#1701) (PR #1702)
  • [gui] Disable HTML rendering in labels if not needed
  • [gui] Update Korean translation (PR #1650)
  • [gui] Update pt-BR translation (PR #1655)
  • [gui] Update zh-TW translation (PR #1694)
  • [gui] Update zh_CN translation (PR #1700)

Full Changelog: v1.4.4...v1.4.5

Download files description:

  • jadx-gui-1.4.5-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.5-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.5.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

1.4.4

20 Aug 16:20
63a5713
Compare
Choose a tag to compare

Features

  • [gui] Add manual search, stop and sort actions to search dialog (#1600)
  • [gui] Save project search history
  • [gui] Show start page on jadx open
  • [gui] Add Brazilian Portuguese translation (PR #1596)
  • Select better resource name (#1581)
  • Add option to disable finally block extraction (#1592)

Bug Fixes

  • Resolve inherited method to use correct alias (#1582)
  • Check variables before merge in finally block (#1592)
  • Checks for field init reorder (#1599)
  • Handle empty endless loop (#1611)
  • Improve top block search for try/catch (#1633)
  • UnsupportedOperationException on adding a field (#1645)(PR #1646)
  • Don't inline anonymous in self inner class (#1645)
  • [gui] Improve search dialog performance
  • [gui] Improve resources search (#1648)
  • [gui] Improve log viewer dialog (#1311)(PR #1649)
  • [gui] Add constructors usage into class usage (#1591)
  • [gui] Sort resources by deobfuscated name (#1595)(PR #1598)
  • [gui] Correct Frida snippet for constructor (PR #1605)
  • [gui] Fix broken FileDialog by using legacy sort (#1628)(PR #1630)
  • [gui] Handle possible classes overlap in disk cache (#1633)
  • [gui] Disable actions if files not loaded (#1644)
  • [debugger] Resolve NPE in adb device viewer (#1585) (PR #1586)
  • [res] XML "null" decoding (#1583)(PR #1594)

Full Changelog: v1.4.3...v1.4.4

Download files description:

  • jadx-gui-1.4.4-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.4-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.4.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

1.4.3

20 Jul 15:50
87e0e5b
Compare
Choose a tag to compare

Bug Fixes

  • [gui] Check user renames (#1557)
  • [gui] Allow to use empty name to reset rename
  • [gui] Ignore/limit waiting of canceled search task (#1568)
  • [gui] Forbid rename method args in fallback mode (#1558)
  • [gui] Set current dir directly in file chooser constructor (#1553)
  • [gui] IndexOutOfBoundsException in JumpManager (#1576) (PR #1577)
  • [gui] QuarkReport data validation added and other minor improvements (PR #1556)
  • [gui] Resolve payload offset for switch insns in debug smali code (#1575)
  • [gui] Ignore errors on code area dispose (#1545)
  • Check synthetic methods before remove/inline (#1560)
  • Correct inline/merge with overriden bridge method (#1580)
  • Add more checks before remove or rename enum methods (#1572)
  • Handle parent of inlined/moved classes (#1578)
  • Update deps and fix proto resource loading (AAB) (#1129)
  • Ignore anonymous classes in enclosing node search (#1580)
  • Save classes with code generation error into cache (#1568)
  • Resolve possible decompilation double execution
  • Better dominators algorithms

Full Changelog: v1.4.2...v1.4.3

Download files description:

  • jadx-gui-1.4.3-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.3-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.3.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

1.4.2

20 Jun 14:38
18070eb
Compare
Choose a tag to compare

Yet another mostly bug fix release to resolve regressions from 1.4.1

Features

  • [gui] Support export to various deobfuscation mapping file formats (#1491)(PR #1505)
  • [gui] Add reload and live reload actions (#1537)
  • [gui] Allow to disable jump on double click (#1540)

Bug Fixes

  • [cli] Allow decoding resource-only APKs (#1517)(PR #1530)
  • [cli] Remove deprecated --deobf-rewrite-cfg (#1513)
  • [gui] Try to prevent jadx node leaks in UI objects
  • [gui] Improve restoration of windows saved state (PR #1511)
  • [gui] Add volatile and update sync for decompiler field in wrapper (#1518)
  • [gui] Resolve popup menu action run (#1514, #1529)
  • [gui] Correct set highlighted text in search (#1507)
  • [gui] Allow to select file on mapping export
  • [gui] Reset disk cache on new jadx version
  • [gui] Force jadx new version check by default
  • Improve blocks tree compare for finally extract (#1501)
  • Support all-catch in multi-catch (#1510)
  • Improve class search for super call (#1512)
  • Keep types on duplicate cast remove (#1527)
  • Check class name collisions (#1526)
  • Use wide move for long/double store/load java opcodes

Full Changelog: v1.4.1...v1.4.2

Download files description:

  • jadx-gui-1.4.2-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.2-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.2.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

Artifacts on maven central repository: list. How to use jadx as a library, read on wiki page.

1.4.1

31 May 14:47
fcd58ae
Compare
Choose a tag to compare

Bug fix release to resolve regressions from 1.4.0

Bug Fixes

  • [gui] Correct handle of selected file in save dialog
  • [gui] Improve usage search, refactor java nodes creation (#1489)
  • [gui] Resolve cast exception for variable reference (#1489)
  • [gui] Save variable name to show in tooltip (#1487)
  • [gui] Save full type info in metadata (#1487)
  • [gui] Correct merge for plugin options from command line (#1490)
  • [gui] Complete Chinese Translation (PR #1492)
  • [gui] Correct close and reopen for decompiler and cache
  • [res] Ignore version in AndroidManifest.xml (#1502)(PR #1504)
  • Save cache dir for reuse on project save/reopen
  • Remap class names for store in disk cache (#1503)
  • Check if directory exists before delete (#1493)
  • Use variable length encoding instead short for offsets (can overflow) (#1489)
  • Skip dex files with parsing errors (#1495)

Features

  • [gui] Add parameters logging in Frida code snippet (#1497)(PR #1498)

Full Changelog: v1.4.0...v1.4.1

Download files description:

  • jadx-gui-1.4.1-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.1-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.1.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

Artifacts on maven central repository: list. How to use jadx as a library, read on wiki page.

1.4.0

21 May 17:06
21e94d8
Compare
Choose a tag to compare

Features

  • [gui] Disk code cache and search rewrite (PR #1483)
  • Allow to load custom input (#1457)
  • Allow to include/exclude dependencies when saving with class filter (#1466)(PR #1467)

Bug Fixes

  • [cli] Don't ignore critical errors (#1150)
  • [gui] Resolve NPE on project save (#1463)(PR #1464)
  • [gui] Confirm directory loading on file open (#1462)
  • [gui] Fix IndexOutOfBoundsException when switching between tabs via mouse wheel (#1456)(PR #1469)
  • [gui] Editor theme loading and error/fallback handling improved (#1476)(PR #1478)
  • [gui] Ask for project file path on exit (#1474)
  • [gui] Escape class, method and field names in Frida code snippet (PR #1480)
  • [gui] Add missing Use debug info option
  • [gui] Use alias for types in tooltips (#1487)
  • Better code styling for if-else blocks (#1455)
  • Workaround to prevent incorrect order after move inline (#1472)
  • Use alias for variable names (#1487)

Breaking changes in Jadx API

  • ICodeInfo: lines and code annotations moved to new interface ICodeMetadata with helpful search methods
  • Changes for all code annotations methods to use ICodeAnnotation instead plain Object.

Full Changelog: v1.3.5...v1.4.0

Download files description:

  • jadx-gui-1.4.0-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.0-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.0.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

Artifacts on maven central repository: list. How to use jadx as a library, read on wiki page.