• Fixed a crash when using remapper.redirect_main and obfuscating classes which reside in the default package.


  • Paramorphism now redirects the Main-Class attribute of the JAR Manifest to its remapped location. This means the main class no longer needs to be excluded from the remapper. This can be disabled by setting the configuration value remapper.redirect_main to false.
  • Fixed an issue when using anti-decompression in conjunction with an obfuscated Main-Class value.


  • Fixed an issue where directories of libraries wouldn't be registered under Windows.
  • Add a configuration value name_generation.shuffle to toggle shuffling of name generation dictionaries.
  shuffle: false # Disable shuffling


  • Fixed a VerifyError when running a JAR that was remapped using a dictionary that has inflation set. (This actually happened to Paramorphism itself)
  • Fixed a potential access violation when using the strategies 'Method Call Indirection' or 'Field Access Indirection'


  • Name generation dictionaries are now defined in the same manner as prefixes and suffixes.
# Old:
    - alphabet
    - classes
    - alphabet
    - alphabet

# New:
    all: alphabet
    classes: enterprise
  • Hotfix: Methods in annotation classes are no longer remapped.
  • The deterministic random seed can be altered using the random_offset config entry.
  • Name generation dictionaries are now shuffled. A way to enable/disable this will come in 1.2-beta.
  • The update checker has been slightly tweaked.
  • There is a new strategy: Field Access Indirection, which obscures field reads/writes to external classes.


This is a complete rewrite. Upgrading from b0.14 to 1.0-beta is not advised until the documentation is made up-to-date.

  • Remapping is now much more robust - Almost all applications that do not perform self-introspection can now be obfuscated without affecting functionality.
  • The version numbering system has been redesigned: b0.x is now 1.x-beta.
  • Libraries can now be addressed using maven specifiers
  • Obfuscation strategies can now have individual element masks
  • Mapping name generation now supports global prefixes and suffixes per element type
  • Support for custom dictionaries has temporarily been removed