DashO Java Obfuscator Change Log V9.0 Build 0 – Release Date August 13, 2018

Change Log – Version 9.0.0 – Release Date August 13, 2018



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.


  • 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.


  • 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.


  • 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.