Latest version of Stunnix CXX-Obfus

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

New features in version 4.9
Released on November 5th, 2021

  • Clang-based symbol extractor: greatly improvement support for compilation database generated by Bear;
  • Clang-based symbol extractor: allow compilation database to miss entries for some of source files;
  • warn if creating project with empty Input directory;
  • Various minor improvements have been made.

New features in version 4.8
Released on June 16th, 2021

  • Added --alter-only-symbols-from-antiexceptions command line option that instructs obfuscator to alter symbols mentioned in antiexceptions file.
  • A lot of improvements in Clang-based symbol extractor and GUI related to it.
  • Added proper support for C++2011 user-defined literals
  • Added support for C++ raw strings. Only 2 forms are supported for now: R"(string here)" and R"RawStringDelim(string here)RawStringDelim" - (i.e. part between R" and ( can be either empty or exactly "RawStringDelim", nothing else is currently supported. If you are using something else, you will have to update your code to support either of 2 supported forms.
  • #import directive is now properly supported.
  • Added support for binary notation (0b1011) for integers.
  • macOS GUI: projects residing in special folders (like Desktop and Downloads) are detected, and instructions are provided on how to grant the app access to those folders.
  • Added script generate-buildscript-from-project-file.pl
  • Various minor improvements have been made.

New features in version 4.7
Released on December 12th, 2017

  • Clang-based tool for extracting exceptions has been added. Clang is a modern compiler suite, and it is the default compiler for iOS, macOS, FreeBSD and OpenBSD. The tool generates exceptions very precisely, listing only symbols that are used in the code. It's available via Symbols ⇒ "Generate exceptions using Clang-based tool" menu item. Using this tool, you won't have to compose list of exceptions manually or extract them from directory with header files - so preparing product for obfuscation will take couple of minutes.
  • GUI: big improvements in GUI.
  • Various minor improvements have been made.

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

  • Code between special comments /*STUNNIX_COPYASIS_BEGIN*/ and /*STUNNIX_COPYASIS_END*/ is not mangled now.
  • Improved support for some language constructs and compatibility with modern C++ standard
  • Fixed support for some MSVC-specific constructs
  • GUI: Small improvements in GUI.
  • Various minor improvements have been made.

New features in version 4.5
Released on April 25th, 2016

  • Added support for obfuscating names of exported and imported in assembler source code. All files with .asm and .s extensions are handled as assembler source code files.
  • Now it's possible to preserve specified number of topmost comments (they usually contain copyright notices) in each file (use "--preserved-top-comments-count" command line option or corresponding setting in GUI).
  • 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).
  • 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: Small improvements in GUI.
  • Various minor improvements have been made.

New features in version 4.4
Released on March 22nd, 2016

  • 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.
  • Added option twopasses to shortest symbol mangler. It allows to protect entire project in one invokation of the obfuscator (i.e. you won't need to invoke obfusctor two times, first in "counting symbols" mode, and then in "obfuscating" mode). It makes using the product from command line much easier when you need to produce as short version of the code as possible.
  • 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.
  • GUI: Now header files are detected in the project, and exceptions are loaded for them automatically.
  • GUI: Small improvements in GUI.
  • Various minor improvements have been made.

New features in version 4.3
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 bin/extract-syms-from-dir.pl script to extract symbols from directory, doing same as Tools ⇒ "Extract symbols from directory with source files" does.
  • Added lib/generate-buildscript-from-op-file.sh - a script to generate buildscript from .op file. It's useful when .op files are kept in git.
  • Added lib/copy-stunnix-project-manager-mode-props.pl - 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 4.2
Released on October 13th, 2015

  • Fixed issues with files stored in utf8 encoding
  • Better handle extrernal linkage specifier to suit more compilers
  • [Windows] Now StartUI.exe and cxx-obfus.exe executables are provided at the top of installation tree on Windows, to make starting GUI and using product from command line easier. No installation of Perl interpreter is now required to run cxx-obfus from command line on Windows.
  • Various minor improvements have been made.

New features in version 4.1
Released on March 16, 2015

  • More file extensions are treated as extensions of files with C/C++ source code.
  • 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)
  • Other small improvements were made.

New features in version 4.0
Released on January 17, 2014

  • Added support for mangling names of files and directories; it is very configurable.
  • Various usability enhancements in Project Manager GUI
  • Other small improvements were made.

New features in version 3.10
Released on September 18, 2013

  • Added support for user-defined literals (introduced in C++11 standard)
  • Various usability enhancements in Project Manager GUI
  • Updated configuration of Portable Firefox used for GUI on Windows
  • When product fails to run on 64 bit Linux, instructions are shown on how to install 32-bit libraries.
  • Other small improvements were made.

New features in version 3.9
Released on June 21, 2012

  • Greatly reduced memory consumption when processing very big source files.
  • Improved performance for projects with lots of files.
  • New sets of exceptions for STL and ANSI C has been added, better support for automatic loading of exceptions based on header files used in the project.
  • No warnings regarding AUTOLOAD when using modern system-wide Perl interpreter when using onfuscator directly from command line.
  • Other small improvements were made.

New features in version 3.8
Released on Nov 22, 2011

  • Directories with metadata from Git, Subversion and Mercurial are now being ignored when creating projects or browsing directories. You won't have to list those directories as ignored anymore!
  • Now GUI does not fail to start on Windows when name of user account has international characters in it (this problem was caused by Portable Firefox bundled with the product).
  • Installer on Windows asks which program group to put shortcuts to. This allows to keep several versions of the product installed in the system.
  • Other small improvements were made.

New features in version 3.7
Released on May 30, 2011

  • File selection and directory selection now works in GUI on Mac.
  • Portable Firefox (used for GUI on Windows) is now unpacked to permament directory (instead of temporary directory) on first run. This prevents problems caused by use of some disk cleaning tools.
  • Other small improvements were made.

New features in version 3.6
Released on November 11, 2010

  • Improved GUI on Mac (file and directory selection works now).

New features in version 3.5.1


Released on April 23, 2010

  • This was a bugfix release. It can be patched into non-trial using a patch for version 3.5.

New features in version 3.5
Released on April 4, 2010

  • Usability and appearance of Project Manager GUI have been improved.
  • Now Project Manager feels more like native application on Windows.
  • Project directories can be now selected using native filesystem browsers (besides entering a path into the prompt).
  • Support for Windows 7 has been improved in Project Manager.
  • Minor fixes and improvements.

New features in version 3.4
Released on November 1, 2009

  • Improved support syntax specific to Microsoft Visual C++.
  • Now projects on Mac OS X Leopard and Snow Leopard can be imported without problems with Project Manager.
  • Improved support for Mac OS X Snow Leopard - now Rosetta is not required to run obfuscator.
  • Project Manager GUI now does not require any TCP sockets to be connected to or listened at on Windows (no firewall alerts).
  • Minor fixes and improvements.

New features in version 3.3
Released on May 26, 2009

  • Now exceptions can be specified as "foo.bar" - in this case, both "foo" and "bar" are treated as exceptions.
  • Added workaround for Networking code in Mac OS X Leopard that prevented projects from being imported.
  • Added menu items to Project menu to open project's input and output directory in Finder when running on Mac OS X.
  • Minor fixes and improvements.

New features in version 3.2
Released on March 24, 2009

  • 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 ).
  • Made compatible with Cygwin (unix emulation environment for Windows)
  • Minor fixes and improvements.

New features in version 3.1
Released on April 16, 2008

  • Now package optimized for Mac OS X is available (in the form of application bundle).
  • Now patching trial into non-trial is performed using Project Manager GUI (using Tools ⇒ Upgrade into non-trial.. menu item).
  • 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.
  • Now Perl 5.10.x is also supported.

New features in version 3.0
Released on February 11, 2008

  • Project Manager got nicer look.
  • Fixed bug with C language support.

New features in version 2.9
Released on November 20, 2007

  • Now Project Manager can extract symbols from all files residing in directory user specified. So one can just put header files for some library to a separate directory, extract all symbols from API of this library using this new functionality, and use them for exceptions.
  • Added exceptions for all header files shipped with Visual Studio 2005. Exceptions are loaded only for those header files that are used in the project; it's possible to alter category for which exceptions are loaded for each header (if several frameworks use header files with the same name).
  • Fixed bug with handling of pure virtual functions.

New features in version 2.8
Released on October 8, 2007

  • Project Manager GUI has been greatly improved, now it's much more intuitive to use..

New features in version 2.7
Released on October 6, 2006

  • Support for character constants was improved.
  • New in this version is improvement in Project Manager - now it's possible to specify rules (in form of filename patterns and corresponding processing mode) on how to handle files in the Project Directory that are not registered in the project. This allows to generate buildscript only once, and use it for frequent rebuilding of the projects in which new source files are introduced or removed very frequently.

New features in version 2.6
Released on June 20, 2006

  • Project Manager GUI has been improved - some labels renamed, useful tooltips added almost everywhere.
  • Some bugfixes.

New features in version 2.5
Released on January 24, 2006

  • When jamming, insert a space between operators in more cases, in order not to alter lexems compiler will see.
  • Added more options to Project->"Switch debugging/production mode for code mangling".
  • Use default browser on Windows instead of always using MSIE.

New features in version 2.4
Released on July 21, 2005

  • One important and several almost non-important bugs were fixed in this version.
  • "Project->Quit GUI" menuitem was added to Project Manager GUI.

New features in version 2.3
Released on March 15, 2005

  • Ability to transform comments (e.g. keep only newlines in them or replace all non-whitespace characters in them with 'x') was introduced - see commandline option --transform-comments (corresponding popup added to Project Manager of course too).
  • Now line numbers of source protected in debugging mode will match line numbers of original files - this makes it easy to locate line that caused error in original code using error message produced for protected code.
  • 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!).
  • Each newly-created project gets two debugging modes, one (the default) tries to keep line numbers in sync with original code (by not performing jamming) and other that jams spaces everywhere.
  • 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.2
Released on February 11, 2005

  • Support for long long ints added.
  • Project Manager now allows to remove files from project that are already absent in the project input directory.
  • 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.1
Released on December 7, 2004

  • Improved support for non-standard C/C++ keywords and constructs.
  • 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.
  • Exceptions can now be stored in files with any type of newline characters.
  • Options were reordered on the "mode options" page in Project Manager.
  • Various bugfixes and improvements all over the code and in the documentation.

New features in version 2.0
Released on July 27, 2004

The version 2.0 was the first public release of Stunnix CXX-Obfus.