DashO Changelog

What's new in DashO 11.3 Build 1

Nov 2, 2022
  • Enhancements:
  • A new option to automatically exclude classes with large methods (larger than 65535 bytes of code after obfuscation) that fail the builds. The option is called “Exclude classes having a method larger than 64K” and adds such classes to the “Global Processing Exclusions” list.
  • A new option to ignore missing entry points.
  • Changes:
  • The ASM Java bytecode manipulation framework library shipped with DashO updated to version 9.3.
  • Apache Groovy library shipped with DashO updated to version 3.0.12.
  • Fixes:
  • Fixed Spring Boot JAR processing.
  • Fixed Spring Boot “Flatten Hierarchy” processing and logging.

New in DashO 11.3 Build 0 (May 24, 2022)

  • Enhancements:
  • Added native support for WAR inputs without the need for complex scripts to extract before protection and repackage after protection. The classes are automatically treated as inputs and the libraries as support libraries inside the WARs.
  • Added native support for Spring Boot Jar and WAR projects. The classes are automatically treated as inputs and the libraries as support libraries inside the Spring Boot Jars and WARs based on the Manifest file.
  • All the protection features are working now with plain WARs and Spring Boot Jars and WARs including Obfuscation, Checks, Watermarking, Signing.
  • The "Entry Points – Libraries" screen is now merged with the "Input" screen where Libraries, Extensible Libraries, and Spring Boot inputs can be configured with the new Handler property.
  • Updated the Web project wizard to easily configure plain WARs and Spring Boot Jars and WARs.
  • Added a Spring Boot sample to our public samples repository to showcase how to configure a Spring Boot project.
  • Changes:
  • The "Entry Points – Libraries" screen is now merged with the "Input" screen where Libraries, Extensible Libraries, and Spring Boot inputs can be configured with the new Handler property.
  • The ASM Java bytecode manipulation framework shipped with DashO updated to updated to version 9.2
  • Apache Groovy shipped with DashO updated to version 3.0.9.
  • Fixes:
  • This release may contain protection enhancements not described here.
  • Validate Modifiers input fields in the Config Editor for Include and Exclude rules.
  • Added an option for Properties with filesystem path values to open a system Browse dialog to choose the path.
  • Added a dropdown for Android Mode projects to switch between configured build variants and their associated Inputs in the Config Editor.
  • Added Japanese Documentation.

New in DashO 11.2 Build 1 (Feb 23, 2022)

  • Enhancements:
  • This release may contain protection enhancements not described here.
  • Validate Modifiers input fields in the Config Editor for Include and Exclude rules.
  • Added an option for Properties with filesystem path values to open a system Browse dialog to choose the path.
  • Added a dropdown for Android Mode projects to switch between configured build variants and their associated Inputs in the Config Editor.
  • Updated the samples.
  • Changes:
  • The Config Editor will open the last project on startup by default (can be changed to “Wizard” and “New standard project”).
  • Updated the End User License Agreement to match https://www.preemptive.com/eula.
  • Fixes:
  • Fixed an issue where input Jars with the same name could overwrite each other if “Merge Inputs” were unchecked.
  • Fixed an issue where the Config Editor incorrectly allowed the selection of some methods for Check injections.

New in DashO 11.2 Build 0 (May 11, 2021)

  • Enhancements:
  • This release may contain protection enhancements not described here.
  • Entry Points, Inclusions, and Exclusions can now use supertype and/or annotation based criteria.
  • Entry Points, Inclusions, and Exclusions can now match classes based on the existence of methods or fields that match the criteria.
  • Compiled bytecode from Java 16 (except the record type and the Sealed Classes preview feature) can now be processed.
  • Global Processing Excludes now allows for classes to never be updated by DashO.
  • Updated the New Project Wizard to include settings for generating Entry Point rules based on annotation based criteria, including a special set of entry points for Hibernate/JPA.
  • Improved the Android Project Wizard to support both ways the Android plugin can be applied.
  • Improved the "Method too large" errors to display the original name of methods when renaming has been performed. Methods from multiple classes will be displayed when necessary.
  • Updated the samples.
  • Changes:
  • Added a warning for ambiguous Renaming Exclude class rules (will be changed to an error in a later release).
  • The Make Synthetic option now includes classes.
  • Updated to use ASM version 9.1.
  • Updated to include AdoptOpenJDK JRE version 11.0.11 in the installers.
  • Updated the End User License Agreement to match https://www.preemptive.com/eula.
  • Fixes:
  • Fixed an issue where a class configured as an entrypoint could get renamed in rare circumstances.
  • Fixed an issue where the Config Editor showed unsupported settings on the Removal-Classes page.
  • Fixed an issue where the Config Editor could add a duplicate entry when dragging a class on the Removal-Classes page.
  • Fixed an issue where the x button on save dialog windows would proceed without saving instead of cancelling.
  • Fixed an issue where DashO would overflow a jump's boundaries in some cases.
  • Fixed an issue where the Browse dialog for selecting the Web project output folder would not allow selecting existing directories.
  • Fixed an issue where the Check Injection Locations list included native methods.
  • Fixed an issue where the splash screen would not scale properly on Windows.
  • Fixed an issue where deleting the last Method Call Removal rule would not save to the project file.

New in DashO 11.1 Build 2 (Mar 30, 2021)

  • Enhancements

New in DashO 11.1 (Dec 11, 2020)

  • Enhancements:
  • This release may contain protection enhancements not described here.
  • Support for processing bytecode from Java 15 (except the Records and Sealed Classes preview features).
  • DashO now saves the project file XML with attributes sorted by name (rather than random order).
  • Added an option to control whether injected string decrypters call intern() on decrypted strings.
  • Improved the samples.
  • Changes:
  • Updated to use ASM version 9.0.
  • Updated to use Apktool version 2.5.0.
  • Updated to include AdoptOpenJDK JRE version 11.0.9.1 in the installers.
  • Fixes:
  • Fixed an issue where DashO would encounter an exception under certain conditions when using an evaluation license.
  • Fixed a build script parsing issue in the Android Wizard.
  • Fixed an issue where DashO reported a renaming collision when there was no renaming input map.

New in DashO 11.0 (Aug 27, 2020)

  • Enhancements:
  • Improved Java 11 support for renaming and removal for classes, methods, and fields only referenced via invoke dynamic and dynamic constants.
  • DashO now supports Floating Licenses.
  • Improved the product activation procedure.
  • The product license can now be updated via the config editor.
  • The product license can now be configured via the environment or command line.
  • Android project wizards have improved gradle script parsing.
  • Android Wizard and Migration Wizard again support Android projects using Android Gradle Plugin 3.2.x, and enforce 3.2.0 as the minimum version.
  • Improved documentation and troubleshooting regarding Kotlin coroutines.
  • Reporting through the Customer Feedback Program can now be controlled by the PREEMPTIVE_TELEMETRY_OPT_OUT environment variable.
  • Added a Release Checklist to the User Guide.
  • Updated the samples.
  • Changes:
  • Breaking Changes:
  • DashO can no longer be run with Java 7, 9 or 10. Running on Java 8 is deprecated. The recommended runtime is Java 11 (or later).
  • Removed support for the deprecated property: ${javaws.jar}.
  • Updated the product name from PreEmptive Protection DashO for Android & Java to PreEmptive Protection DashO.
  • Updated to include AdoptOpenJDK JRE version 11.0.8 in the installers.
  • Updated the DashO Gradle Plugins for Java to v5.0.0 with support for Gradle version 5 and later.
  • Removed instructions for installing .rpm Linux/GNU installation packages with rpm: use yum instead.
  • Support for using the license file found in DashO's installation directory has been deprecated. Please contact PreEmptive regarding migrating to a Floating license.
  • Fixes:
  • Fixed an issue where ControlFlow would report it was active on a method when it didn't change anything.
  • Fixed an issue where Block Splitting would not be applied when Dalvik Compatibility was enabled.
  • Fixed an issue where Block Jumbling would not finish under certain circumstances.
  • Fixed an issue where DashO would encounter a StackOverflowError under certain conditions.
  • Fixed an issue where antconfig.bat did not work properly.
  • Fixed an issue where the Config Editor was partially enabled when the license was expired.

New in DashO 10.3.0 (Mar 16, 2020)

  • Enhancements:
  • Resource Encryption is no longer a beta feature.
  • Support for running DashO with Java 14.
  • Support for processing bytecode from Java 14 (except the preview feature Records).
  • Support mark() and reset() on decrypted resource streams.
  • Updated library-rules.pro file added by the Wizard for AAR project to allow Resource Encryption related support classes to be renamed.
  • Added a new Resource Encryption sample.
  • Changes:
  • Updated to use apktool version 2.4.1.
  • Updated to use ASM version 7.3.1.
  • Fixes:
  • Fixed an issue where an Android project may have used an incorrect Shelf Life jar.
  • Fixed an issue where the standalone Lucidator GUI had issues launching on macOS under certain conditions.

New in DashO 10.2.0 (Jan 22, 2020)

  • Enhancements:
  • Android Mode support for Resource Encryption (Beta).
  • Support for Google Play Store key upgrade.
  • Android project wizards now put the maven.preemptive.com repository last in the repositories priority list.
  • This release may contain protection enhancements not described here.
  • Changes:
  • Requires version 1.1 of the DashO Gradle Plugin for Android if using resource encryption.
  • Updated to include AdoptOpenJDK JRE version 11.0.6 in the installers.
  • Removed the authorized-app Shelf Life sample.
  • Fixes:
  • Fixed an issue where saving a project could overwrite without prompting.
  • Check injections now respect global processing excludes.

New in DashO 10.1.0 (Oct 15, 2019)

  • Enhancements:
  • Support for running DashO with Java 11, 12, & 13.
  • Support for processing bytecode from Java 11, 12, & 13.
  • The DashO installers now include an AdoptOpenJDK JRE (v11.0.4). This JVM is used, by default, when running DashO.
  • Changes:
  • Running DashO with Java 7 is now deprecated.
  • Updated to use ASM version 7.2.
  • The MethodParameters attribute is now configured for removal separately from Unknown.
  • Application usage reporting via Customer Feedback Program is now enabled by default. Preferences that were already set in existing installations will not be modified. This setting can changed from within the DashO GUI by going to Help > Customer Feedback Options.

New in DashO 10.0.1 (Aug 30, 2019)

  • Fixes:
  • Fixed an issue with the registration dialog being too tall on some scaled displays.
  • On startup, subscription expiration warning dialogs are only presented during the warning period.

New in DashO 10.0 Build 0 Beta 3 (Aug 22, 2019)

  • Enhancements:
  • Added a new DashO Gradle Plugin for Android.
  • Added Android Mode which is specifically designed to work with the DashO Gradle Plugin for Android as part of an Android build process that uses R8.
  • The GUI now has a Standard Mode and an Android Mode.
  • The Android Mode GUI will prompt you to refresh the list of input classes when it detects changes in the inputs.
  • To migrate to this new Android integration refer to the Upgrading page.
  • Added new paths in the wizard to:
  • Generate new Android Mode projects.
  • Migrate Android projects that use DashO Gradle Plugin to the new DashO Gradle Plugin for Android.
  • Reorganized the DashO User Guide to have a more intuitive layout, separating discussion of obfuscation concepts from the project file reference and the user interface.
  • The GUI listens for changes to the configuration and will prompt to reload.
  • DashO is no longer restricted to running on Java 7 - 10, and can be run on Java 11 and later. Support for processing bytecode from Java 11 and later is not yet available.
  • Updated the GUI to easily configure Dalvik compatibility.
  • The random reordering of simple blocks in a method by Block Jumbling now varies between runs of DashO.
  • When Control Flow is enabled and Removal is configured to preserve the Local Variable Table for a method, the method's parameter names will now be preserved, but information about local variables will still be removed.
  • Added the --pathMap command line option which allows specifying a file that configures DashO's input and output paths. This option is currently only available for Android Mode.
  • Updated the DashO-GameOfLife sample.
  • Improved the Spring Bean sample.
  • Improved some error messages.
  • Changes:
  • Updated the product name from PreEmptive Protection - DashO to PreEmptive Protection DashO for Android & Java.
  • Updated the DashO Gradle Plugins for Java (previously called DashO Gradle Plugin):
  • v3.4.0 with deprecated support for the Android Gradle 3.4.0 plugin.
  • v4.0.0 with no Android support.
  • v4.1.0 with an updated name.
  • Updated to use ASM version 7.1.
  • Updated to use apktool version 2.4.0.
  • Breaking Changes:
  • DashO Gradle Plugin for Android versions used with DashO 10 Betas (0.9.0 and 0.10.0) are no longer supported.
  • The Append current Java runtime and Use Classpath from Environment options have been removed.
  • Wildcard class matching (**) for method call removal has been removed.
  • DashO's public get*Version*() methods have been removed.
  • Proxy configuration within the DashO GUI has been removed. Proxy configuration is now specified using standard Java system properties.
  • Removed support for deprecated properties: ${dasho.java.version}, ${jce.jar}, and ${jsse.jar}.
  • The DashO Eclipse Plugin has been removed.
  • The javaws.jar property has been deprecated, and cannot be used in some configurations.
  • Control Flow and String Encryption are now enabled by default on new projects.
  • Removed the option to hide the toolbar.
  • The navigation tree in the DashO GUI can no longer be collapsed.
  • Packages in rule editors are now listed hierarchically.
  • DashO will now only warn once per build if Control Flow is enabled and Removal is configured to preserve the Local Variable Table or Local Variable Type Table.
  • DashO now will obscure all but the last four digits of the license key in the build output.
  • When DashO is run with a User license (e.g. not a Build license), a notice will be printed indicating that User licenses may not be used to protect binaries for general release.
  • Updated the End User License Agreement to match https://www.preemptive.com/eula.
  • Fixes:
  • Fixed a rare issue when reading MethodParameters attributes which do not reference a constant pool entry.

New in DashO 9.3. Build 2 (Jun 14, 2019)

  • Enhancements:
  • This release may contain protection enhancements not described here.
  • Fixes:
  • Fixed an issue with Control Flow Block Splitting when running applications on older Android devices (KitKat / 4.4 and earlier) that use the Dalvik VM. Enable the fix by setting ANDROID_DALVIK_COMPATIBILITY to true in the User Properties.

New in DashO 9.3. Build 0 (Feb 19, 2019)

  • Changes"
  • Updated the DashO Gradle Plugin:
  • v3.3.0 with support for the Android Gradle 3.3.0 plugin.
  • v3.2.3 with includeAsInputs improvements.
  • Fixes:
  • Fixed an issue with random renaming that would cause a large amount of memory to be allocated under certain conditions.
  • Fixed an issue where incremental renaming validation found a false conflict between methods.
  • Fixed an issue processing the EnclosingMethod attribute when the referenced class is not included in the inputs.
  • Fixed an issue where DashO would encounter an exception under certain conditions when using custom string encryption.
  • Fixed an issue where DashO kept too many files open at once.

New in DashO 9.2. Build 0 (Dec 27, 2018)

  • Enhancements:
  • Added an Emulator Check for Android.
  • Added a Hook Check for Android.
  • This release may contain protection enhancements not described here.
  • Changes:
  • The algorithm for field renaming has been updated to work with the fix to field references mentioned below.
  • Removed default heap size limit for WAR wizard produced projects.
  • Added a reminder to the String Encryption page that Removal should also be enabled.
  • Updated the DashO Gradle Plugin to 3.2.2.
  • Fixes:
  • Fixed an issue with the splash screen on macOS Mojave.
  • Fixed an issue where some field references would be inappropriately altered, producing incorrect behavior in rare cases.
  • Fixed an issue showing the User Guide in rare cases.
  • Clarified use of check injection settings for annotations.

New in DashO 9.1.0 Build 1 (Oct 23, 2018)

  • Enhancements:
  • This release may contain protection enhancements not described here.
  • Changes:
  • Updated the DashO Gradle Plugin to 3.2.1 with support for the Android Gradle 3.2.1 plugin.

New in DashO 9.1.0 (Oct 17, 2018)

  • Enhancements:
  • Block Jumbling may now be optionally disabled in the Control Flow configuration.
  • Supports Block Splitting with APKs.
  • Added a Troubleshooting page to the User Guide.
  • Improved documentation about effective use of String Encryption with Unused Member Removal.
  • Made additional enhancements to the Android Wizard, logging, and the usability of the DashO GUI.
  • This release may contain protection enhancements not described here.
  • Changes:
  • Updated the DashO Gradle Plugin to 3.2.0 with:
  • Support for the Android Gradle 3.2.0 plugin.
  • A fix for an up-to-date issue.
  • A fix for a Kotlin issue.
  • A fix for an Android Test issue.
  • Additional minor improvements.
  • Updated the dex2jar tool to use version 27 of dx.
  • Updated to use ASM version 6.2.1.
  • The DashO GUI will now warn if a project has a ${gradleInput} input without any resolved classes.
  • The Android project wizard will no longer configure entry point classes to be renamed by default.
  • Updated to use apktool version 2.3.4.
  • The properties in the DashO .dox file are now sorted alphabetically by name.
  • Includes other minor changes to the way that the DashO wizard processes common libraries.
  • Fixes:
  • Fixed two Android project wizard issues seen when updating the dasho.gradle file in some scenarios.
  • Fixed an issue with interactions between the various control flow options which caused project builds to fail under certain circumstances.
  • Fixed an issue where main methods were added as entry points by default on the Android project wizard.
  • Fixed an issue where the Android project wizard would list test configurations as build variants.

New in DashO 9.0.0 (Aug 14, 2018)

  • IMPORTANT NOTES:
  • This release includes substantial new features, changes to existing features, and the removal of certain deprecated features. Please review this changelog carefully, and see the Upgrades page in the documentation to learn more about upgrading to this release.
  • Support for Java 9 is no longer provisional, but support for Java Modules is still provisional.
  • Java 10 is now supported.
  • It is now easier to configure a build-time JDK that is independent of the JDK/JRE that DashO is run with. Projects created with earlier versions of DashO should be updated to use this feature. See the documentation for details.
  • A new feature, Block Splitting, was added to DashO's Control Flow options. Block Splitting splits blocks into smaller blocks and adds control flow logic. This feature is on, by default, when Control Flow is enabled, even on existing projects.
  • PreEmptive Analytics features have been removed.
  • Projects using PreEmptive Analytics code annotations or annotation attributes will encounter a compile-time error (when compiled with the updated lib/dasho-annotations.jar). References to these elements must be removed from the source code.
  • Projects using PreEmptive Analytics virtual annotations will error at build time. Opening these projects within the DashO GUI, and saving, will automatically strip them of the affected settings.
  • Quick Jar Mode has been removed. Quick Jar projects will automatically be converted to Advanced Mode projects.
  • The obfuscate-jar Ant task has been removed and will no longer be recognized.
  • Ant-based configuration of build settings is no longer supported. Nested elements of the obfuscate task will no longer be recognized, and the project attribute of the obfuscate task is now required.
  • Enhancements
  • You can now run DashO with the Java 9 or Java 10 JRE, DashO can process Java 10 classes.
  • It is now possible to specify the JDK used to build a project in the DashO project configuration. This is presented as Include JDK on the "Input - Support" page of the GUI, and is the preferred way to locate the runtime libraries.
  • A new feature, Block Splitting, was added to DashO's Control Flow options.
  • Tamper Checks can now reference trusted certificates in addition to signing certificates to enable support for Google Play App Signing.
  • Improved handling of dead code in inputs for greater Kotlin compatibility.
  • Java Modules (.jmod) can be added to the support classpath.
  • Improved call tree traversal for features introduced in Java 9.
  • Improved computation of stack-map frames allowing DashO to process classes built with a more recent version of Java than that which DashO is run on.
  • The wizard will now warn before overwriting a file.
  • Double clicking or pressing enter when an entry is selected in most of the list/tree editors in DashO will display the properties editor.
  • Include and exclude rule configuration is now done exclusively via dialogs, rather than through in-page fields. The dialogs will appear automatically when new rules are added via the "New" buttons on the side of the UI, or when clicking the new "Edit..." button in the UI. This same UI workflow has been applied to the Input and Property pages, as well.
  • This release may contain protection enhancements not described here.
  • Changes:
  • Support for Java 9 is no longer provisional; support for modules is still provisional.
  • The Append current Java runtime and Use Classpath from Environment options are deprecated. Using these options will cause an error when running DashO in Java 9 or later, and will generate a warning when running DashO in Java 7 or 8. The new Include JDK feature should be used instead.
  • The Java wizards now require a valid JDK location.
  • Automatic checking for updates is now enabled by default, even if you did not previously employ automatic update checking. You can disable update checks via the User Preferences dialog.
  • Signing will use the configured JDK to locate the jarsigner executable if no signing tool is configured.
  • DashO no longer supports appending the current runtime if running with an Apple or IBM JVM.
  • Updated to use ASM version 6.2.
  • Removed PreEmptive Analytics features.
  • Removed Quick Jar Mode. Existing Quick Jar projects will automatically be converted to Advanced Mode.
  • Removed the obfuscate-jar Ant task, and Ant-based configuration of build settings.
  • Removed default Java heap initial and maximum sizes from dashogui[.bat], dashocmd[.bat], premark[.bat], tokengenerator[.bat], and the native launcher configuration.
  • The merge attribute on <runtime> is now ignored. Shelf Life runtime classes will be merged into output whenever Shelf Life Checks are injected.
  • The Injection UI is now named Checks.
  • The jce.jar and jsse.jar properties have been deprecated, and cannot be used in some configurations.
  • The dasho.java.version property has been deprecated.
  • DashO will no longer use a single underscore (_) or var as an identifier when renaming.
  • The wizard will no longer merge settings with project files that already exist. It will now prompt you to either overwrite the existing file or choose a different one.
  • Updated the DashO Gradle Plugin:
  • v3.1.1 with a fix for the Illegal reflective access warnings and -DDISABLE_DASHO.
  • Using a final field as a Check or Response action will cause an error, and using a final field as a Response source will generate a warning.
  • The navigation tree in the main GUI window is no longer resizable.
  • Removed navigation tree search.
  • Removed the up and down arrows from most panels which previously allowed reordering of entries.
  • Removed the readme file.
  • If String Encryption is enabled, DashO warns when it detects string concatenation that passes constants in bootstrap method arguments. This is currently unsupported by string encryption.
  • Fixes:
  • The Android project wizard has been updated to look for Kotlin class files in additional locations to support version 3.0.0 and later of the Android Gradle Plugin.
  • Fixed native method handling in call tree traversal.
  • Improved license checking under concurrent build scenarios.
  • Fixed a file browsing issue on Windows.

New in DashO 8.5.0 (May 3, 2018)

  • Enhancements:
  • File > Download Sample Projects was added to allow quick access to the samples.
  • Method call removal now supports removing non-void-return methods.
  • Documented how to use method call removal to remove Android logging calls.
  • Improved usability of file browsing dialogs in the DashO GUI.
  • A default editor (notepad.exe on Windows or TextEdit.app on macOS) is now used when viewing the project and reports.
  • Added support for generating a ProGuard-compatible map file when renaming classes.
  • Changes:
  • The samples have been moved online and are no longer included with the DashO installation.
  • Improved organization of GUI documentation.
  • Wildcard class matching for method call removal is deprecated.
  • The <obfuscate-jar> task, in the Ant integration, is deprecated.
  • Updated the DashO Gradle Plugin:?v3.1.0 with support for the Android Gradle 3.1.0 & 3.1.1 plugins and which uses minifyEnabled instead of disabledForBuildVariants.
  • ?v3.0.3 with the generateProGuardMap configuration option.
  • Includes apktool-2.3.3.
  • Includes dex-tools-2.1-nightly-28.
  • Fixes:
  • Globally Excluded classes are now listed on the Method Call Removal screen.

New in DashO 8.3.0 (Nov 30, 2017)

  • Enhancements:
  • Added a Kotlin Android sample and documentation.
  • Added an Android check-telemetry sample.
  • Improved the APK wizard so that unused classes will be removed by default.
  • Improved the UI splash screen.
  • Minimal support has been added for inputs and dependencies containing a Java 9 module-info.class file.
  • Lucidator supports decoding stack traces which contain module information.
  • Added some internal Kotlin specific rules to ease configuration when obfuscating the Kotlin runtime.
  • Changes:
  • Try/Catch Control Flow will no longer add Exception classes for classes excluded globally from obfuscation.
  • Updated the DashO Gradle Plugin:?v2.3.3 with improved handing of includeAsInputs.
  • ?v3.0.0 with support for the Android Gradle 3.0.0 plugin.
  • Includes apktool-2.3.0.
  • Updated the PreEmptive Analytics API to v7.6.2.
  • Removed the --noSplash option from dashogui.
  • Removed the PreEmptive Analytics samples.
  • Fixes:
  • Fixed a processing error with internally defined annotations.
  • Fixed the Automatic setting on Make Public to handle accessibility changes due to the renaming prefix.
  • Fixed a font issue during registration.
  • Fixed an error with Try/Catch Control Flow seen when a non inner class's name contains a $.
  • Fixed an issue when searching for included Java runtime packages in the WAR wizard.
  • Fixed an ArrayIndexOutOfBoundsException issue when optimizing some methods.
  • Fixed an issue where checking for updates while offline may mark the license as expired.

New in DashO 8.2.0 (Jul 28, 2017)

  • Enhancements:
  • Added the ability to inject Root Checks (@RootCheck, @RootResponse), with new code annotations and a new user interface. A sample project is provided.
  • Supports Android-O.
  • Supports Kotlin.
  • Added search capability to the User Guide.
  • Improved performance when processing sets of related interfaces.
  • Supports APK Signature Scheme v2 by allowing the use of apksigner when signing outputs.
  • User properties can now be used in the additional arguments when signing output.
  • Passes signing passwords via the environment instead of command line.
  • The Android project wizard recognizes configured intents in resource xml files (as used by static shortcuts) and configures those activities as non-renameable.
  • The Android APK project wizard attempts to find Android's build-tools directory to ease configuration of signing and aligning the output APK file.
  • Runtime accessibility of sources and actions specified for injections is now checked as part of the build.
  • Changes:
  • Updated the DashO Gradle Plugin to v2.3.2.
  • A warning is issued and nothing is injected when @ReportCaughtExceptions or @ReportThrownExceptions is specified but is not configured send a message nor perform an action.
  • A warning is issued and nothing is injected when @ReportUncaughtExceptions is specified but is not configured to send a message nor perform an action nor ignore the exception.
  • A warning is issued when using the exit action while injecting checks into Android.
  • Updated to use ASM version 5.2.
  • Interface implementation checking now supports the Ignore Missing Methods option.
  • Includes apktool-2.2.3.
  • Quick Jar mode is deprecated and will be removed in a future release of DashO. Users will be prompted to convert their projects.
  • Fixes:
  • Fixed an issue where invalid recursive interface definitions would cause an unhandled error in DashO.
  • An error is issued when an extended class or implemented interface can't be found, even if Ignore Missing Classes is enabled.
  • Improved the warning message when there is an issue processing an XML file for renaming.
  • Fixed UI issues when selecting output locations on macOS.

New in DashO 8.1.0 (Apr 19, 2017)

  • Enhancements:
  • The project wizard now outputs warnings to the Problems tab.
  • The War project wizard will automatically exclude some standard frameworks from being added as entry points.
  • String decrypters are now generated and used on a per-jar basis, by default, for multi-jar projects.
  • A properties file can now be passed on the command line via --properties (filename) to provide the values for properties used in the project's configuration.
  • Changes:
  • The level and number of string decrypters both now default to 2 in the .dox schema.
  • All decrypters for string encryption are now added to generated anonymous static inner classes. Decrypter Class configuration is now used to specify the containing outer classes.
  • The optional Constant Pool Tag is now embedded as custom class attribute.
  • Updated the DashO Gradle Plugin?v2.2.1 with support for a customized transform name.
  • v2.3.0 with support for the Android Gradle 2.3.0 plugin and which utilizes the new --properties command line argument.
  • Includes apktool-2.2.2.
  • Fixes:
  • Fixed an exception when processing Spring constructor arguments under certain circumstances.
  • The project wizard will log a warning and continue processing .war and .jar files after errors reading metadata.
  • Fixed an issue where a recursive property expansion error would inaccurately occur.
  • Fixed an issue where string encryption could, by altering the order of events during static initialization, cause incorrect behavior, under certain conditions.
  • Fixed an issue with abstract method implementation resolution that could inappropriately stop the build.
  • Fixed an issue where the optional Constant Pool Tag did not appear in the final output classes.
  • Fixed the ${dasho.java.version} property value when running DashO with Java 8.

New in DashO 8.0.0 (Nov 29, 2016)

  • Enhancements:
  • Added the ability to inject Debug Checks (@DebuggingCheck, @DebuggingResponse, @DebugEnabledCheck, @DebugEnabledResponse), with new code annotations and a new user interface.
  • New Tamper and Shelf Life UI screens.
  • The User Guide is now in an easy-to-read HTML format.
  • Lucidator now provides a command-line mode and ships with DashO.
  • A new map file conversion tool: ConvertMap.jar.
  • Added an Android debug check sample.
  • Updated the injected code annotations and virtual annotations to include a customDataSource element which replaces @PropertySource.
  • Improved logging of injected code.
  • Changes:
  • DashO now requires a 1.7 JVM or higher, to run.
  • Changed product name from DashO to PreEmptive Protection - DashO.
  • The DashO GUI now saves modified projects before building.
  • Ant-based configuration of .dox files is deprecated.
  • DashO builds now stop immediately if an error is encountered. Existing projects expecting output from DashO after errors will need to be updated to fix the errors.
  • The HALTONFIRSTERROR global option has been removed, as its behavior is now the default. The option will be silently ignored for existing projects.
  • The PRE_7_0_EXIT_BEHAVIOR global option has been removed. A warning will be emitted for existing projects using this option.
  • The .dox configuration format has changed. Opening an older project file in this new version of DashO will perform a one-way migration of the project file.
  • The section has been moved under a new section.
  • @TamperCheck and @TamperResponse virtual annotations are now under new and sections.
  • @ExpiryCheck virtual annotation has been replaced with the new section.
  • @ExpiryDate, @WarningDate, @StartDateSource, @ExpiryPeriod, @WarningPeriod, and @ExpiryTokenSource virtual annotations have been replaced with attributes on the new element.
  • @SignerInfo virtual annotation was replaced with inside the new section.
  • Lucidator output has been changed to better mimic actual stack traces, rather than the prior report-style output.
  • The Instrumentation UI has been updated.
  • Method-level virtual annotations can no longer be applied at the class level.
  • The @PropertySource annotation is deprecated and replaced with the per-annotation property customDataSource.
  • The @SignerInfo annotation is deprecated and replaced with properties inside @TamperCheck.
  • The @ExpiryCheck annotation has been renamed to @ShelfLifeCheck.
  • The @ExpiryDate, @WarningDate, @StartDateSource, @ExpiryPeriod, @WarningPeriod, and @ExpiryTokenSource annotations have been deprecated in favor of properties of the new @ShelfLifeCheck annotation.
  • The @ReportThrownExceptions and @ReportCaughtExceptions annotations will emit build warnings if the injection site has no throw statements or catch blocks, respectively.
  • The @TamperCheck and @TamperResponse code annotations' response attribute is now an enumeration.
  • The @TamperResponse code annotation now requires the source attribute to be set.
  • Setting the probability to 0 in a Tamper Response now disables the response, instead of triggering it every time.
  • A Tamper Response with an incorrectly configured probability will generate a build error.
  • A Tamper Check with no valid action, response, or message will generate a build error.
  • Checks, responses, and code injection virtual annotations that are configured but unused during injection will produce a build error. Other unused annotations will produce a build warning.
  • The Android Ant project wizard was removed.
  • The Android project wizard now defaults Make Public to Automatic.
  • The reflection report no longer includes classes from the merged PreEmptive Analytics runtime.
  • The renaming map file will now contain all classes, methods, and fields processed by DashO and not just ones which were renamed.
  • An error will be output when a renaming input map contains a new name for a class, method, or field which is configured as non-renameable.
  • Updated to use ASM version 5.1.
  • Includes apktool-2.2.1.
  • Fixes:
  • The incremental renaming report no longer includes the globally excluded classes.
  • Fixed the probability calculation for injected responses.
  • Tamper Response will now send a message (when configured) even when response is set to none.
  • Tamper Check no longer causes a validation issue on Android devices when using an old version of the Android build tools (e.g. v19.1 or v20.0) and a custom private getApplicationContext() method.
  • Fixed an exception when processing configuration files under certain circumstances.
  • Fixed an exception when processing the athrow bytecode under certain circumstances.
  • Direct APK processing no longer compresses assets, which prevented some apps from working properly.

New in DashO 7.11.0 (Oct 21, 2016)

  • Changes:
  • Updated the DashO Gradle Plugin to v2.2.0, with support for the Android Gradle 2.2 plugin.
  • Updates to the PreEmptive Analytics API (v7.6.0).
  • Fixes:
  • DashO will again rename input classes which are referenced by support classes via generics.
  • The output jar's manifest entry set in the UI will again properly save to the config file.
  • Shelf Life expiration messages, when starting their own session, now properly send to a custom endpoint.
  • The FeatureStop virtual annotation again defaults to end of the method.

New in DashO 7.10.0 (Jul 26, 2016)

  • Changes:
  • Updated the DashO Gradle Plugin to v2.1.0, with support for Android Gradle 2.1.

New in DashO 7.9.0 (Jul 26, 2016)

  • Changes:
  • Updated the DashO Gradle Plugin to v2.0.0, with support for Android Gradle 2.0.
  • Includes apktool-2.1.0.
  • Fixes:
  • Input classes which are used in methods declared by support libraries will no longer be renamed(rare).
  • CustomAnnotations defined and used in inputs can now be removed without error.
  • Will not rename a method in a parent class if it implements a non-renamable interface method in a sub class.

New in DashO 7.8.0 (Jul 26, 2016)

  • Fixes:
  • Renaming will no longer cause a method name conflict that occurred in certain cases.
  • The Android Gradle Project Wizard will warn instead of stop when encountering resource parsing issues.
  • The Android Gradle Project Wizard looks at the new "merged" resource directory.
  • Changes:
  • Updated the DashO Gradle Plugin to v1.8.0, with support for Android Gradle 1.5.
  • Includes apktool-2.0.2.
  • Includes dex2jar-2.0.
  • A full path is now selected when choosing the Build Tools Directory for APK outputs.

New in DashO 7.7.0 (Jul 26, 2016)

  • Enhancements:
  • Added an "APKTOOL_FRAMEWORK_DIR" property to allow custom frameworks to be used when DashO is directly processing APK files.
  • Fixes:
  • Fixed possible ArrayOutOfBounds issue when processing InvokeDynamic calls in Java 8.
  • Fixed: WARNING: Could not open/create prefs root node SoftwareJavaSoftPrefs at root 0x80000002 (on windows).
  • Fixed command line documentation.
  • Fixed a regression in some licensing scenarios.
  • Changes:
  • Updates to the DashO Gradle Plugin (v1.7.0).
  • Renamed the samples for Android.

New in DashO 7.6.0 (Jul 26, 2016)

  • Enhancements:
  • Documentation improvements in multiple areas including incremental obfuscation, annotations, APK support, and the readme.
  • Added an Android tamper check sample.
  • Improved UI handling of default and generated company id's used for instrumentation.
  • Lucidator will now find the correct stack trace entries when given output lines which start with a prefix. (e.g. The "[java]" prefix output by Ant).
  • Fixes:
  • Better error handling when attempting to launch the UI in a headless environment.
  • Removed extraneous User Properties output by the Android APK wizard.
  • Application and company information will now be injected with the non-dialog AddUncaughtExceptionHandler instrumentation annotation.
  • Cleaned up file locks left after running the project wizard.
  • Copying a duplicate non-class file, via Auto Copy, to an output jar now causes a warning instead of a fatal error.
  • Changes:
  • Updates to the PreEmptive Analytics API (v7.4.2).
  • Includes apktool-2.0.1.
  • Updated to use ASM version 5.0.4.
  • Updated End User License Agreement to correspond to changes made for Analytics products.

New in DashO 7.5.3 (Jul 26, 2016)

  • Changes:
  • Updates to the DashO Gradle Plugin (v1.6.0).

New in DashO 7.5.2 (Jul 26, 2016)

  • Fixes:
  • Fixed an issue parsing some InvokeDynamic constants created by predicates in Java 8.
  • Changes:
  • Updates to the PreEmptive Analytics API (v7.4.1).
  • Updates to the DashO Gradle Plugin (v1.5.0).

New in DashO 7.5.1 (Jul 26, 2016)

  • Changes:
  • Updates to the DashO Gradle Plugin (v1.4.1).
  • Gradle Plugin
  • Fixes:
  • The correct "sdk.target" value is now passed to DashO when targeting an Android addon platform.

New in DashO 7.5.0 (Jul 26, 2016)

  • Other Enhancements:
  • Improved processing time for large classes.
  • Allows the configuration of multiple jar files in a single library entry point.
  • New functionality allowing a single configuration location to exclude classes or packages from all obfuscation.
  • Ability to generate a Company ID for PreEmptive Analytics instrumentation.
  • Improved documentation relating to Tamper Detection.
  • New documentation on migrating Android applications from Eclipse (Ant) to Android Studio (Gradle).
  • Fixes:
  • Signing UI now enables the configuration necessary for Tamper Detection, when signing is turned off.
  • Changes:
  • Reorganized the Output UI.
  • Includes dex2jar-0.0.9.15.
  • Includes apktool-2.0.0RC3.
  • Updated to use ASM version 5.0.3.
  • Updates to the DashO Gradle Plugin (v1.4).
  • Updates to the PreEmptive Analytics API (v7.4).
  • Gradle Plugin Version 1.4
  • Enhancements:
  • Support for APK Splits.
  • Support for Multidex.
  • Support for Resource Shrinking.
  • Changes:
  • Requires Gradle 2.2 (or later).
  • Supports Android Gradle Plugin 1.0.0 (requires at least 0.14.3).
  • Requires DashO 7.5 (or later).

New in DashO 7.4.4 (Jul 26, 2016)

  • Fixed a devirtualization optimization issue with interface default methods which use lambdas in Java 8.
  • Fixed a renaming issue with InvokeDynamic constants which reference instance methods in Java 8.