Latest version of Stunnix Perl-obfus

Latest version of Stunnix Perl-obfus is 3.8. If you wish to be notified of new versions of Stunnix Perl-Obfus as soon as they are released, you can signup for Stunnix Newsletter.

New features in version 3.8
Released on August 29th, 2016

  • Now it's possible to specify a path to Perl interpreter to use (now it's a property of project).
  • GUI: Fixed problems with starting Project Manager GUI on computers with Windows 10.
  • GUI: Added ability to generate aliases for command line tools by installing wrappers via Tools ⇒ Configure command line tools... Use it to install aliases to obfuscator and other command line tools to any directory. It's recommended to install aliases to a directory, listed in your PATH environment variable - this way you won't have to specify path to command line tools when invoking them.
  • GUI: Generated buildscripts can now be queried for files that are neither registered in the project nor were auto-added to the project.
  • GUI: Tools ⇒ Command line builder now shows the command line on the same page, preserving current state of the form.
  • Now it's possible to tell obfuscator to replace some strings containing name of single symbol with a string containing mangled version of that symbol, using --quoted-symbol-names command line option. GUI support for this option has been added too (new screen was introduced: Symbols ⇒ Edit strings that contains symbol names). This removes the need to wrap such strings into call of OBJNAME function.
  • GUI: Now GUI allows to query list of absent, autoadded and missing files in Settings ⇒ For files; also on that page now it's possible to remove from the project all files that are absent in filesystem.
  • GUI: Now GUI can be run by several users on the same computer at the same time.
  • GUI: Now all symbol-editing screens in Symbols menu save symbols without leaving the screen. Added button for adding symbols extracted from directory with source files into Symbols ⇒ Edit user-specified exceptions in one click.
  • GUI: Added Build ⇒ Clear output & state files & rebuild all menu item. Now menu items Build ⇒ Rebuild * and test are visible only if testing command is defined.
  • Usage guides have been rewritten, they are much more clear now.
  • GUI: A lot of improvements in the GUI.
  • Various minor improvements have been made.

New features in version 3.7
Released on February 22nd, 2016

  • Added new mangler for symbols: mixcase. Given a set of replacement identifiers (e.g. just one topsecret), it will generate new symbols by altering case of characters in them, e.g. it will replace symbols with TOpSecREt, toPSecREt, tOPsEcReT and so on.
  • combs mangler for symbol names now won't have any hash collisions at all. In previous versions of the product, hash collisions forced user to change the seed and rebuild the project.
  • Added lib/ - a script to generate buildscript from .op file. It's useful when .op files are kept in git.
  • Added lib/ - a script to copy settings for some mode from one .op file to another .op file.
  • GUI: All structures in .op files and buildscript files have their keys sorted. This reduces number of changes between different versions of .op file, very useful if they are stored in git.
  • GUI: Now it's possible to use environment variables in paths for Project's Input, Output and State directories (use it like this: $ENV{PROJECTSDIR}/project214/in).
  • GUI: Added function for generating .bat version of buildscripts.
  • GUI: A lot of improvements in GUI, especially in build results window.
  • GUI: Now it's really possible to specify names of files with exceptions via mode settings.
  • GUI: Now it can handle projects with even hundreds of thousands of files without any issues (Windows command line length limits no more apply).
  • GUI: Generated buildscripts can now be queried for files missing in the project and for files that were autoadded to the project (using new command line switches).
  • Various minor improvements have been made.

New features in version 3.6
Released on October 13th, 2015

  • Add support for Perl 5.22 and below
  • Better handle some perl constructs. Now Mojolicious scripts are fully supported.
  • GUI has been made more beautiful and easier to use.
  • Now generated buildscripts have documentation on how to run them (path to Perl interpreter), date of generation, project title.
  • Now buildscripts allow overriding input, output and state directories from command line.
  • Added ability to specify the directory where lists of exceptions can be stored, both as option for GUI and via commandline option of buildscripts.
  • Added ability to annotate projects (by entering project's description)
  • Various minor improvements have been made.

New features in version 3.5
Released on June 11, 2014

  • Fixed problems with GUI on Windows.
  • Miscelaneous bug fixes and small improvements.

New features in version 3.4
Released on Oct 15, 2010

  • Added full support for Perl versions 5.10.1, 5.10.2 and 5.12.[0-2]. Special measures were taken to make it compatible with future versions of Perl 5.x too,

New features in version 3.3
Released on April 13, 2009

  • Added full support for Perl 5.8.8, 5.8.9 and 5.10.0, including new operators and keywords.
  • Now one can list several symbols to exclude from obfuscation in the file with exceptions - by separating symbols with dot - e.g. "myclass.mymethod" (this is equivalent to having two lines "myclass" and "mymethod" in file with exceptions).
  • Improved support for Perl formats.
  • Now Project Manager works under Cygwin Perl.
  • Added support for changing "skin" of Project Manager (click Tools ⇒ Change skin); "silver" skin has been introduced and became default skin (of course one can return to "red" skin at any time ).
  • Project Manager GUI now ignores case of filenames on filesystems that are not case-sensitive. So e.g. if one removes file "todo.html" from project input directory and then creates "TODO.html", Project Manager won't show file "TODO.html" as "not in the project".

New features in version 3.2
Released on April 2, 2008

  • Build Results screen of Project Manager now has shortcuts for all menu items in the Build menu - now you can rebuild the project without switching to "main" screen just to click "Rebuild changed" there.
  • Fixed minor issues with building the project in Project Manager.
  • Project Manager now shows samples of output for each mode selection dialog invoked via Settings ⇒ Select preset for.. menu item.

New features in version 3.1
Released on February 27, 2008

  • Project Manager GUI has become much more beautiful.
  • Very minor fixes and enhancements were introduced

New features in version 3.0
Released on November 13, 2007

  • Severe bug fixed: now backtick operator (e.g. `ls`) with mix of static strings and variable names is correctly supported.
  • Improved algorithm for generation of replacement identifiers for all manglers except "md5" and "prefix" (now names are more random).
  • Project Manager GUI has been greatly improved, now it's much more intuitive to use..
  • Use safe fallback for case when perl interpreter for backend is not specified in configuration file or on commandline (this mostly affects invalid installations of perl-obfus).

New features in version 2.9
Released on July 4, 2006

  • 'use N.M.P;' and 'require N.M.P' constructs (where N,M,P are digits) for checking perl version at runtime and compile time now work on recent versions of Perl.
  • Scripts that contain characters in multibyte encodings (including utf8) can now be correctly encoded.
  • Project Manager now uses default browser on Windows instead of always using MSIE.
  • When building projects using Project Builder, file and directory permissions are copied from corresponding objects in the project input directory.
  • Project Manager now shows 'Makefile' in the list of project's files.
  • Usability enhancements in UI.
  • Documentation was improved.

New features in version 2.8
Released on November 17, 2005

  • Added ability to specify encoding of input files using --input-encoding switch. Specify character encoding here if you encode your scripts and strings in your scripts are not in iso8859-1 encoding.
  • Added workaround for several bugs in standard Perl interpreters.
  • Project Manager GUI now allows to switch encoding off or on globally for a project using Project->Switch mode for encoding of code.
  • A lot of useful obfuscation presets (switchable via menu Project->'Switch debugging/product profile') were added to Prject Manager GUI, like mode that just removes comments, or mode that keeps symbol names unchanged or mode that doesn't alter source in any way (meant to be used with encoding turned on).
  • Menuitem Project->'Quit GUI' was added to Project Manager GUI.
  • Most recent version of Stunnix Perl Web Server is used now for running Project Manager GUI interface - this means improved stability of Project Manager GUI.

New features in version 2.7
Released on April 25, 2005

  • Sheebang line (#/usr/bin/perl at the top of perl scripts) is now correctly handled when obfuscation is performed on Windows (only unix newline separates that line from rest of the code) - the result of obfuscation does not confuse Unix kernels now (they seem to not understand Windows line breaks in scripts at all - at least Linux and FreeBSD do).
  • Most recent version of Stunnix Perl Web Server is used now for running Project Manager GUI interface - this means improved stability of Project Manager GUI.

New features in version 2.6
Released on March 29, 2005

  • Now utility by default merges the symbols it extracts with symbols already listed in its output file. This can be turned off using its --do-not-merge commandline option.
  • Now profile for protecting code (mangling engines for symbols, strings, numbers, jamming of spaces and stripping of comments) can be switched in 2 clicks using Project-}"Switch debugging/production mode for code mangling" menu item (for newly-created projects only!).
  • Projects managed using Project Manager can now contain files with names starting with dot.
  • Project Manager now allows to rename a member of project in its metadata (using Project-}Files menuitem).
  • Now it's possible to specify command to invoke before building the project and a command to invoke after building the project using Project-}Options settings.
  • Assigning mode in Project-}Files now has improved GUI.
  • Status of project building operation is now shown in distinct colors in Build Log Window.
  • A lot of bugfixes in Project Manager that fixed inability to set some specific values for some options.
  • Added Frequently Asked Questions and Answers to documentation.
  • Better support for some language constructs.

New features in version 2.5
Released on February 16, 2005

  • Support for perl formats improved.
  • Destroying of script that is run on a computer with name the script was not licensed to run on is supported now.
  • Project Manager now allows to remove files from project that are already absent in the project input directory.
  • Now Project Manager allows to have arbitrary number of files in the project that are to be scanned for identifers of html nodes and form elements.
  • Due to improvements in Stunnix Perl Web Server Project Manager now runs more reliably on Windows computers with incorrect network settings.
  • Various bugfixes and improvements all over the code and documentation.

New features in version 2.4
Released on December 8, 2004

  • Added better support for some unsafe and rarely-used perl constructs.
  • Exceptions can now be stored in files with any type of newline characters.
  • Options were reordered on the "mode options" page in Project Manager.
  • Servermode "multifile" now supports filelist parameter - this allows you to specify names of files to process in the dedicated file, one per line, without specifying them as commandline arguments (and commandline can become too long to be supported by the OS).
  • Now Project Manager can be used to build projects containing arbitrary huge number of files without pushing OS's limits of the maximum number of commandline arguments supported.
  • Various bugfixes and improvements all over the code and documentation.

New features in version 2.3
Released on October 13, 2004

This version was a bugfix and maintainance release.

New features in version 2.2
Released on August 25, 2004

This version was a bugfix and maintainance release.

New features in version 2.1
Released on June 3, 2004

  • Greatly improved utility to generate list of symbols used from third-party modules - now it detects use of variables of all kinds from third-party modules too (e.g. $FindBin::Bin) and now it's able to add "hidden" symbols from modules it knows about - e.g. CGI::upload().
  • Added ability to extract list of symbols used from third-party modules using Project Manager (menu item Symbols→Get list of symbols from external modules)
  • Added utility to extract list of modules that Perl code require's or use's (to aid in producing standalone executables from perl code using various tools like PAR or Perl2Exe).
  • Encoded scripts now take 20% less RAM to run.
  • Shortcut for starting Project Manager by double-clicking on MacOSX was added (/bin/startui.command).
  • Miscellaneous fixes and improvements all over the code.

New features in version 2.0
Released on May 3, 2004

  • Project Manager - an advanced intuitive cross-platform graphical user interface, that internally is implemented as dynamic web site running localy on user's computer using Stunnix Perl Web Server, was added.
  • Added support for user-specified symbol mapping via -F commandline option.
  • Added support for ensuring that symbols produced by combs and md5 symbol manglers are unique across entire project via adhere-mapfile option of these symbol manglers.
  • Added ability to generate list of symbols from ActiveX and OLE components (available in Project Manager when run on Windows platform).
  • Streamlined installation procedure by renaming 'setup' to '' - now it's possible to install the product by double-clicking on the '' instead of opening console window.
  • Miscellaneous fixes and improvements all over the code.

New features in version 1.6
Released on April 13, 2004

  • Support for new symbol name obfuscator combs added - it produces names of symbols using a specified set of characters; an interesting example is producing symbols using visually non-distinguishable characters 'l' and 'I', resulting in symbols looking like 'IllIl'. This new symbol name obfuscator has ability to enforce uniquiness of resultant symbols across entire project with the use of option adhere-mapfile.
  • Symbol name obfuscator shortest got ability to use characters from the specified set for generation of identifiers too, allowing to produce as cryptic identifiers as 'combs' obfuscator can - e.g. like 'lIIllI'.
  • Support for enforcing uniquiness of resultant symbols across entire project with the use of option adhere-mapfile was added to symbol name obfuscator 'md5'.
  • Now protected non-encoded code (and thus encoded code too) has much less non-needed space characters. Old spacing mode can be recalled by specifiyng --old-spacing-mode option.
  • - an utility to extract names of form fields from html files was added to the distribution.
  • Support for using case-insensitive exception lists was added - it is very useful for specifying properties and methods of ActiveX objects. Specify the file names to treat as case-insensitive exceptions after --excludeidentsfile-anycase switch to Perl-Obfus.
  • Support for specifying list of suffixes that should be preserved in mangled identifiers, specified via commandline option --suffixes-asis-list, was added.
  • All commandline parameters that specify names of files with lists of symbols (like --excludeidentsfile) now can take name of the directory - in that case symbols are loaded from all files located in that directory and its subdirectories.
  • Added support for module anti-exceptions to the utility and introduced some changes in its behaviour.
  • Improved support for some language constructs.
  • Documentation was improved as always.
  • Guide on protecting projects using Perl-Obfus was added to Documentation section of the site.

New features in version 1.5
Released on August 25, 2003

Support for ensuring that licensing conditions of the code was added to the Standard Edition of Perl-Obfus. It allows to make the program automatically terminate during startup if its lifetime has expired or if it's run on a host that is not in the set of hosts it was licensed to; also user-defined checks and actions are supported too.

Now it's possible to make the obfuscated result to be much more resistant to the analisys by using "do-nothing" licensing conditions generic asserter - the numeric constants from the original source code will be replaced with arithmetic expressions involving variables that are initialized in the additionally encoded block of code ensuring licensing conditions (this is not available in Lite Edition).

The code and documentation as always undergone polishing.

New features in version 1.4
Released on May 19, 2003

Besides generic code polishing, a new obfuscator for symbol names - shortest - was added. It turns Perl-Obfus into so-called "source code compressor" tool, that can be used to minimize size of source code by renaming variables to the shortest names possible (the more used symbols are renamed to the shorter symbols).

This is the first version of Perl-Obfus also available in Lite Edition.

New features in version 1.3
Released on April 14, 2003

Besides generic code and documentation polishing, Stunnix Perl-Obfus included the following important new features:

  • Support for encoding of obfuscated code was added. See the sample output for examples how encoded files look like. The encoding is applied to the result of obfuscation by default, but can be configured or even turned off using -e switch.
  • Support for effortless but imperfect source code hiding mode was added - it's possible to request only encoding to be applied to the source code, skipping obfuscation stage, with the use of --noparsing commandline switch. If this mode of code hiding is selected, there is no need in generating exception files, inserting SN and SNS in the places due, and most probably ensuring that obfuscated obfuscated and encrypted code works as original - it's guaranteed that code encoded in the --noparsing mode will work the same as original one without any changes necessary.
  • Support for storing the mapping between obfuscated and orignal symbol names to the external file was added - pass a file name to save mapping to after the -d switch.

New features in version 1.2
Released on March 24, 2003

The version 1.2 was the first public release of Stunnix Perl-Obfus, so the list of changes between 1.2 and version preceeding is not provided.