>>> JEB v2.2.7 (August 12, 2016)

Amendment to v2.2.6 - an important fix had not shipped with the previous release.


>>> JEB v2.2.6 (August 4, 2016)

Debuggers improvement (stability and features). Major JEB 2.3 is under development; we will provide details soon.

Desktop client:
- Debuggers: Process/Threads new tab: memoryCode which allow to see live memory data and live disassembly code.
- Debuggers: VM/Locals view: Display improvements: add Final and static flags, detect the Class for null objects, display "null" instead of "id=0"
- Debuggers: VM/Locals view: add a right click action to call toString() on objects
- Debuggers: VM/Locals view: Performance improvements: split arrays in element groups when more than 100 elements, do not preload objects.
- Bugfix: Attempt to attach a debugger to a non-debuggable unit would loop infinitely
- Bugfix: Overview bar scrollbar on native debuggers for addresses larger than 0x80000000
- Bugfix: Regression if JEB path contained spaces with some Java runtimes
- Bugfix: Disappearing saved "recently opened files" and "recently executed scripts"
- Information: View memory usage in About box

Core Modules:
- APK: bundling Android Nougat resource framework API 24 (rev. 2)
- ARM: bugfix: fail gracefully when VSTM and VLDM have incorrect parameters
- X86: bugfix: minor

Debuggers:
- Bugfix: On Step into, check that the breakpoint is reached by the current thread (this caused breakpoint to be reached several times, UI slowed down, and impossibility to detach or close project)
- Bugfix: Breakpoints on overloaded methods was not working properly
- New parameter DoNotUseNativeDebugger which can have 3 values: DEFAULT, NEVER, ALWAYS to indicate if the user wants to connect gdb native debugger (DEFAULT will only connect gdb when the target APK embeds native libraries)
- Raise notification for devices older than Android 5.1 where JDWP implementations have bugs
- Allow modifying Java variables (primitives and String)
- Improve JDWP performance (cache Class Operations)
- Reduce JDWP timeout to 15s (instead of 30s)
- Interpreter: allow field and array element picking (example: "readobj 4023 var1.var2[3]" or "readobj this.var1.var2")
- Interpreter: add "invoke" entry to remotely call a method. BE CAREFULL that deadlock can happen if current paused thread requires some action

Android DEX Decompiler:
- Fix: overly aggressive array-inlining optimizations
- Other fixes

PDF Analyzer:
- N/A


>>> JEB v2.2.5 (June 13, 2016)

Support for MIPS and Aarch64 + Maintenance update. (All Android ABIs but MIPS64 have now full debugging support!)

Desktop Client:
- Friendlier update mechanism on license expiration and support for manual update
- Code hierarchy: option to show all items, including external types
- Debuggers: support for generic copy action via context menu
- Debuggers: log fragments to track debugger events
- Debuggers: stack view fragments if available
- Debuggers: force-detach if attach was unsuccessful
- Fix: keyboard bindings issues
- Fix: version comparison on update was preventing required UI state refresh
- Other bugfixes related to the UI framework

Core Modules (including Disassemblers):
- MIPS disassembler (MIPS32)
- Various improvements for ARM/ARM64
- Support code define/undefine actions
- Better processing of ELF symbols
- ARM: PLT stub detection for ELF

Debuggers:
- MIPS: debugger for Android native libraries compiled for 'mips' ABI, with support for single-step, tracing, breakpoints, etc.
- Aarch64: debugger for Android native libraries compiled for 'arm-v8a' ABI (aka ARM 64)
- Stability improvements, race condition and synchronization issues were fixed
- Support for 'write registers' command in interpreter for native debuggers 

Android DEX Decompiler:
- N/A

PDF Analyzer:
- N/A


>>> JEB v2.2.4 (May 25, 2016)

Maintenance update + Disassembly support for ARM 64. Debugging support for ARM 64 is coming next, along with MIPS.

RCP Client:
- Debuggers: support for editable type hints for Dalvik variables, including objects/arrays
- Text viewer: normal caret behavior is now the default behavior (customizable)
- Text viewer: smarter event processing from plugins to avoid useless refreshes
- Various bug fixes (text viewer, navigation bar, interpreter window, etc.)
- Limited logger length, customizable via UI property

Core and Essential Modules:
- Aarch64 (ARM v8 64-bit) disassembly support
- Fix: corner-case unit processing after deserialization 
- APK: fixes + shipping latest API 23 Android Framework (dated March)
- API: added AbstactUnit.onPropertyChange()
- Minor changes and improvements

Debuggers:
- Provide effective (refactored) addresses to clients
- Dalvik: interpreter: added "readvar" and "readobj" commands
- API: support for type hints
- Stability improvements 

DEX Decompiler:
- Performance improvements (memory usage)
- Added plugin option to set decompilation timeout 
- API: added IJavaClass.getSupertype()/getImplementedInterfaces()
- Java 8: render "default" keyword for default implementations in interfaces
- Java 8: proper syntax/support for calls to super interface's "default" method
- Corner case bugfix in the AST optimizer


>>> JEB v2.2.3 (May 4, 2016)

The Android debuggers are now public (see v2.2+ changes). Full support for multi-Dex merging. Next up: support for ARM v8 64-bit in JEB v2.2.4.

RCP Client:
- Speeding up project tree rendering and refreshes for high-yield artifacts (eg, large APKs) 
- Reverting to UI package v2 (RCP 4.4.2 based) for Mac platforms
- Fix: All invocations of the client will consistently pull workspace information from bin/

Core and Essential Modules:
- APK/DEX: full support for multi-Dex merging (beyond 64Krefs limitations)
- DEX: assembly rendering with higher granularity (one side-effect is faster rendering for large classes)
- DEX: assembly cache fix-up (could lead to high memory usage)
- DEX: memory usage improvements
- APK: Fix: identification was failing on some Zip files
- API: Fix: WrapperUnit: do not recreate presentations that already exist
- API: added IInteractiveUnit.executeAction() with no-notifying support for plugins
- API: better documentation using Doclava
- Tool: ADB: support for path expansion (~)

DEX Decompiler:
- API: addition of IJavaOperator.getOperatorType()


>>> JEB v2.2.2 Beta (April 24, 2016)

Final update for JEB 2.2 Beta. JEB 2.2.3 will be made available to all users shortly.

RCP Client:
- UI support package major update (v3, RCP 4.5.2 based)
- Fix: Windows start-up script

Core and Essential Modules:
- Debuggers: stability improvements and new features (eg, findmem)
- APK: bugfix: file resource leak: temporary files in %tmp% were not deleted properly
- ARM: stability and parser improvements
- Minor fixes related to resource leaks

DEX Decompiler:
- API: getElementType() for all AST elements
- API: added missing getSignature() method for Method elements
- Other fixes


>>> JEB v2.2.1 Beta (April 13, 2016)

An update on the Dalvik and native debuggers - still in Beta - and a specialized API to deal with the finer details of DEX.

RCP Client:
- Debugger: full memory view (read-only, bytes only for now)
- Debugger: support for Run-to-line
- Debugger: allow copy to clipboard for Variables
- Debugger: Dalvik: view all fields, including super-type fields
- Shortcut: Ctrl+M to maximize/minimize views, Ctrl+T to toggle the toolbar
- Various bug fixes

Core and Essential Modules:
- Debuggers improvements, fixes and additions (sample code for API)
- DEX API allow full access to all DEX elements (see IDexUnit interface) (sample code) 
- APK API (partial) (see IApkUnit interface) 
- XML: added missing top-level comments
- Various bug fixes


>>> JEB v2.2.0 Beta (April 2, 2016)

- Native code support: ARM, Intel x86 and x86-64
- Android debuggers: Dalvik and native
- Details at www.pnfsoftware.com/blog/jeb-android-debuggers


>>> JEB v2.1.4 (March 28, 2016)

Maintenance release, bugfixes and API changes.

RCP Client:
- UI API: allow retrieval of focused unit via getFocusedView()
- UI API: possibility to open a view via openView()
- Allow artifact file path update in JDB2 database

Core and Essential Modules:
- XML: files having a size of less than 4 bytes could be incorrectly identified as XML files
- ELF: units are now serialized
- API: added getItemObject() to interactive unit interface
- Bugfix: support loading of JDB2 if artifacts are missing
- Dispose all units on close event
- Unit processing handled by the main processor, per SPI change

DEX Decompiler:
- Fix: getComments and getAddressLabels return per-class maps, as opposed to the full DEX map


>>> JEB v2.1.3 (March 15, 2016)

Layout manager and various updates before 2.2 beta.

RCP Client:
- Layout manager: save and restore layouts automatically
- Prefer loading the most recent JDB2 instead of the first one
- UI bug fixes

Core and Essential Modules:
- APK plugin: Default frameworks/ directory is now rooted in user's home folder
- ELF plugin: Tighter checks
- XML: lazy processing for complex SVG files
- Bugfix: fail properly when multi-DEX cannot be merged 
- API: Marks in text documents
- Minor changes and fixes
- Added utility routines (for text documents, general utility, etc.)
- Headless client for easy license key generation in air-gaps

DEX Decompiler:
- AST tags (rendered as Java text marks)
- Bugfix: regression regarding rendering of static method calls in anons
- API: Added getInferredType() to public decompiler interface


>>> JEB v2.1.2 (February 16, 2016)

Additional details can be found on our blog.

RCP Client:
- Support for multiple UI layouts
- Option to keep the currently selected node in project tree in-sync with the current view ("auto-open units")
- Option to allow same-type units to be opened in same or new view
- Text views improvement and better text navigation
- Options dialog improvements
- Minor UX tweaks and fixes

Core and Essential Modules:
- Python script support via Jython is now part of the core API
- The core jeb.jar includes one implementation of a headless client that will execute
  Python scripts (for Business and above builds; command-line switch: --script)
- APK module: option to merge multi-DEX APKs when possible (the option is enabled by default)
- DEX module: allow "pX" rendering in register-ranges
- XML module: bugfix: malformed XML header (missing trailing '?')
- Allow empty input
- Miscellaneous bug fixes

DEX/Dalvik Decompiler:
- Fix: Rendering issue with static methods of base class of anonymous class

PDF Analyzer Module:
- Support for XFA (XML Forms Architecture) fragment streams reconstruction and parsing


>>> JEB v2.1.1 (January 15, 2016)

Minor update, mostly improvements in UX of the desktop client. 

RCP Client:
- Support for view replacement (this makes navigating decompiled code easier)
  ("Sticky" views can be opened by right clicking a unit, and selecting "Open a new view")
- Better navigation (forward, backward), with cross-view support
- Better network proxy support
- Fixes regarding back-end events processing by the client
- Minor UX tweaks

Core:
- Bugfix: APK without resource folder was showing an empty folder in UI
- Support for network proxy (refer to the FAQ for setup instructions)
- Second-chance if network connectivity fails and the build requires it
- Children of ELF units are now properly processed
- Bugfix: Soft delegation for ELF sections (side-effect is Android OAT processing is re-enabled)
- Miscellaneous bug fixes

DEX/Dalvik Decompiler:
- Bugfix: anonymous classes within static methods were not rendered properly


>>> JEB v2.1.0 (December 8, 2015)

Major release. Includes: better navigation, augmented API (UI-API, Java AST API), persistence of decompiled code, etc.
Paves the road for the JEB 2.2 release which contains various machine code parsers.

RCP Client:
- Navigation/Overview bars in text viewers - see blog
- Overview bars support rendering of metadata provided by interactive units - see script
- Implemented augmented UI-API (refer to changes in Core) - see script
- Improved logging in development mode
- Better asynchronous jobs
- Better algorithm to determine which panel should receive views 
- F2 shortcut for client script execution
- Better navigation in text views, including bug fixes
- Regular expression text searches
- Disabled Option panels areas that are not available in a given build
- Disabled GTK3
- Prepared support for E4 Mars 
- Miscellaneous bug fixes

Core:
- Augmented Client API for UI clients (allow interaction with views, fragments, etc.) - see script
- Java AST API for manipulation of Java source units
- The API underwent several changes that will require code fix-ups in existing plugins - see blog
- Metadata manager for interactive units
- Unit interfaces updated to support persisted and transient children units
- Unit formatter interfaces updated to support persisted and transient documents
- Better JAR plugins loader, will try to load newest version only
- Various bug fixes and engine refactoring for performance
- Native ELF (32, 64) and PE (32, 64) plugins
- Fixes in serialization; some JDB generated by JEB 2.0 might be incompatible with 2.1
- Compression/encryption support added for JDB2 (30% of original size)
- Under-the-hood support for processor-based code units, part of the public API in JEB 2.2

DEX/Dalvik Decompiler:
- Support for the nwly-introduced Java AST API, offering read/write access to decompiled code
  (The Java AST API is slightly different than JEB1's - refer to our blog for a detailed change log)
- Decompiled code is persisted in the JDB2 files
- Decompiler unit name reflects the current effective class name

PDF Module:
- Support for persistence: project saved to JDB2 files
- Various bug fixes and code refactoring improvements


>>> JEB v2.0.15 (December 1, 2015)

This is the final 2.0 release!
The 2.1 branch has been in the works for quite some time. It is scheduled for publishing on December 8. 

RCP Client:
- Temporary workaround for the MacOS-specific issue with Eclipse RCP (NPE on Control.internal_new_GC)
- Export Java UT8-encoded
- Miscellaneous bugfixes

Core/Modules:
- Various bugfixes


>>> JEB v2.0.14 (November 12, 2015)

This release adds support for client scripts in Python.
Most of our workload is focused on the upcoming major releases 2.1 and 2.2.

RCP Client:
- Support for client scripts (in Python, using Jython)
- Text viewer: support for word-wrapping in source views
- Text viewer: tooltip in navigation bar
- Bugfix: text search
- Miscellaneous bugfixes and increased verbosity

Core:
- Public API package for client scripts (com.pnfsoftware.jeb.client.api.**)
- Better persistence, loading and saving large projects uses less memory
- Bugfix: logger CRLF
- Bugfix: unit child removal

Modules:
- (dex) bugfix: unit child removal
- (dcmp_dex) bugfix: no 'this' for abstract static methods


>>> JEB v2.0.13 (October 15, 2015)

A minor maintenance release. Most work is focused on the upcoming v2.1.

RCP Client:
- Maintain caret's column position when scrolling in text views 
- Developer portal (refer to Help menu and blog)
- Various bug fixes and changes

Core:
- Initial support for plugin contributors and unit contributions
- Prevent some plugin initialization errors from corrupting the engines
- Fixed issue in logger
- Various bug fixes


>>> JEB v2.0.12 (September 29, 2015)

RCP Client:
- Allow engines (back-end) plugins execution via the File/Engines menu
- Verify development plugins classnames in Options panel
- Limit line length in text fragments (configurable)
- Asynchronous decompilation when triggered from xrefs or when following items
- Allow deletion of units and unit trees
- Bugfix: filter text in dialog boxes was conflicting with Enter key
- Bugfix: invalid window error on GTK
- Miscellaneous bug fixes

Core:
- Support for optimized DEX (odex) files, see our blog for how-to
- Stronger support for illegal/invalid DEX opcodes
- DEX decompiler: added missing support for cross-references on variables
- Unit deletion (experimental)
- Minor API changes
- Miscellaneous optimizations to reduce memory footprint


>>> JEB v2.0.11 (September 22, 2015)

RCP Client:
- Interruptible save/load project
- Allow users to enable or disable plugins (see File/Engines)
- Fast filter search in large trees
- Lazy loading of strings view to decrease memory usage and speed up loading of views
- Cross-references navigation across the source (decompiled) views
- Navigation from code string view to string reference in assembly
- Possibility to display type hierarchies in source views
- More compact view names for increased readability
- More consistent status bar behavior
- Bugfix: shell retrieval
- Bugfix: word-wrap in text search
- Bugfix: text dialog adjustment on resize
- Bugfix: do not restart a decompilation if already started
- Bugfix: allow program close on error
- Miscellaneous bugfixes and improvements

Core:
- Faster persistence mechanism (up to 5 times)
- Dynamic activation and deactivation of plugins
- Better matching assembly code to/from decompiled source code


>>> JEB v2.0.10 (September 14, 2015)

RCP Client:
- Locate current unit in project tree
- Text views: Ctrl/Cmd + Shift + Up|Down to perform regular text scrolling
- Bugfix: tree navigation could focus the filter text too early
- Bugfix: NPE for new users

Core:
- N/A


>>> JEB v2.0.9 (September 10, 2015)

RCP Client:
- Export Decompiled code is interruptible
- Smoother text scrolling
- Bugfix: code hierarchy tree not refreshing properly
- Bugfix: null pointer exceptions on Jump in text views

Core:
- N/A


>>> JEB v2.0.8 (September 9, 2015)

A maintenance release with stability improvements and export functionality.

RCP Client:
- Export decompiled code via the File menu
- Better filtering and search in all tree and table views
- Persistence of UI widget properties (eg, tables column widths)
- More status bar messages, such as location in project tree
- Bugfix: layout manager could show duplicate tabs
- Bugfix: memory leak in the client
- Bugfix: infinite wrap-around search in text views if text not found
- Bugfix: fixed potential dialog box issues on Linux GTK
- Bugfix: flickering in text views
- Bugfix: potential scroll bar errors in text views

Core:
- Additional changes for planned v2.1 (debugger module API)


>>> JEB v2.0.6 (August 25, 2015)

This release is primarily a user experience improvement.

RCP Client:
- Shells and widgets's position and size history 
- Contextual menus with actions in text document views and other unit views
- More intuitive navigation from code hierarchy views
- Unit views location preferences
- Allow complex filters on options and other tree/table views
- Minor UI bug fixes (related to toolbars, icons, keyboard shortcuts, etc.)

Core:
- User-defined limit on recursive processing for deeply nested artifacts

Analysis plugins:
- Microsoft Compound file (OLE) analysis plugin for Excel and Powerpoint files (open-source)


>>> JEB v2.0.5 (August 18, 2015)

Core: 
- APK module: changes to handle Android API 23 (Marshmallow) framework
- APK module: support for resources protected by DexGuard Enterprise
- DEX Decompiler module: performance improvement
- Miscellaneous bug fixes and stability improvements

Analysis plugins:
- MIPS 32-bit PoC disassembler (open-source)


>>> JEB v2.0.4 (August 10, 2015)

RCP Client:
- Locale bugfix
- Tree auto-expansion for code units
- MOTD facility
- Styling options (colors and font)
- Better error handling
- Provide more hints to floating clients

Core: 
- Enum class identifiers
- Support expansion for tree documents

Analysis plugins:
- Adobe PDF plugin (customers only)
- Linux ELF plugin (open-source)
- Android OAT parser (open-source)
- PKM/ETC1 images parser (open-source)
- OBB Android Expansion packs plugin (open-source)
- FAT (File Allocation Table) parser, used by OBB (open-source)


>>> JEB v2.0.1 (August 1, 2015)

Initial product release
