Stunnix C/C++ Obfuscator - FAQ - Table of Contents
No, it's impossible to recover it - the names of symbols and comments are
gone forever. So keep the original version of your code in a safe place!
Yes, protected version of the same symbol will be the same in every file
of your project.
If using "shortest" obfuscator (that minimizes total length of identifiers),
you will have to reobfuscate entire project and resend all files.
In all other cases (e.g. with default obfuscation engine - called "md5")
you will have to obfuscate only changed file and to resend only it.
You have to list all functions, variables, names of types from the code you
plan to obfuscate that are referenced by calling code as "exceptions".
If using Project Manager, put them to Symbols ⇒ User-specified exceptions,
if using commandline - put them to file (one per line) and add
"-x name-of-file.txt" to your commandline.
No, you will have to list all symbols individually.
But you can automate the task of composing such list by the following trick
(if using Project Manager):
perform obfuscation of your code, go to Symbols ⇒ View resultant symbol
mapping, scroll to bottom and click a link "download a list of encountered
symbols", save it to some file (getting list of all symbols encountered
in your project listed alphabetically), and use your favourite text editor
to cut all symbols from that library (since symbols in the file will
be sorted alphabetically, all symbols that start from the same string
will occur as a single block); copy and paste all "interesting" symbols
into Project ⇒ User-specified exceptions.
If using Project Manager, do the following:
perform obfuscation of your code, go to Symbols ⇒ View resultant symbol
mapping, scroll to bottom and click a link "download a list of encountered
symbols", save it to some file (getting list of all symbols encountered
in your project listed alphabetically). Paste that list nto
Symbols ⇒ "User-specified exceptions". Then go to
Symbols ⇒ "User-specified antiexceptions" and list all symbols that
need to be obfuscated.
It's impossible to answer this question since the ratio greatly depends on
the average length of identifiers, average length of comments and average
identation size.
Unfortunately we are not aware of such reviews. Frankly speaking, most of reviews on the net
are paid reviews, so even they existed, we wouldn't recommend to trust them. And keep in mind
that most reviews a dedicated to a single product, not a comparison of several ones..
We have created some list that can be thought of a comparison "we with others" - just go to product
page and scroll to the list of features - all features marked with "unique" are really unique
to our product (and are absent in any other).
We recommend you to test our product yourself and make a decision. We have a trial that lets
you fully evaluate it and even apply to your project. Such evaluation will reveal all flexibility
and power of our product; the only limitation during evaluation is that all symbols can only
prefixed with a same prefix. However, this allows to fully evaluate syntax support, support
for exceptions, support for javascript embedded into html. Also, projects created during evaluation
can be opened by a non-trial version of our product, so you won't waste the time spent during
evaluation at all - your product will already be prepared for protection, and applying
production-level protection will be a single click on "Build, Rebuild all" in non-trial
edition of our product.
You can get non-expiring version of Stunnix CXX-Obfus
by making a
request for it. A email with a download link will be sent automatically
to you.
You have to read
Guide on preparing project for obfuscation and
Guide on using Project
Manager.
Yes, Stunnix CXX-Obfus is very flexible and advanced product and it can be used
for project of any kind and size.
Yes, we will consider adding custom features for additional fee - just
contain our sales manager.
No, this doesn't help at all. One pass is enough.
You have to install Perl interpreter for Windows. Please download the
most recent version of it freely from
ActiveState's site.
Then you'll be able to execute commandlines shown in manual.
But we
greatly recommend using Project Manager GUI.
These two interfaces are equal featurewise.
So we greatly recommend to use GUI interface (i.e. Project Manager) -
it will save the time needed to read manuals, compose commandline etc.
Also it allows to protect all files in project in one pass (instead of the
need to invoke Stunnix CXX-Obfus from commandline for each file.
Also GUI allows to create buildscripts
- Perl scripts that can perform building/clearing output/rebuilding changed
files in your project. So once your project options are "stabialized" you
will be able to rebuild your entire project (or only changed files)
from commandline too.
Stunnix CXX-Obfus is written in Perl programming language.
It is Perl code, but it's protected from analysis and illegal reuse
using our perl obfuscation tool -
Stunnix Perl-Obfus.
We greatly recommend all professional Perl programmers to use it for their
projects in order to protect their intellectual property.
Project Manager is in fact a web interface for GUI;
when you invoke it it starts Web Server.
This allows Project Managerr GUI to work as is on Windows, Unix, MacOS X
without
any modification. We promote using locally-running webserver as a new
effective approach to writing cross-platform GUI, please see more information
about
Stunnix Perl Web
Server on our site.
You probably got an impression that it requires internet connection
because your firewall warns that program tries to connect to internet;
the firewall you use is incorrect and badly written, address 127.0.0.1 is
local; every computer has it as address of itself, independant of the fact
whether it's connected to the internet or not.
This special address is for special "loopback" network interface card
accessible only from the same
computer; programs from other computers will even be unable to know that
Project Manager and Stunnix Perl Web Server are running and will be unable
to communicate with it in any way, so it's safe to run Stunnix Perl Web Server
(and Project Manager ) even on computer directly connected to the Internet.
But of course Internet connection is not required in order to use Project
Manager.
No, Stunnix Perl Web Server by default is configured not to listen on any network interfaces
except a special "
loopback" interface accessible only from the same
computer; programs from other computers will even be unable to know that
SPWS is running and will be unable to communicate with it in any way, so
it's safe to run Project Manager (and SPWS) even on computer directly
connected to the Internet.
First, you have to put exceptions to a file in your project input directory,
one symbol per line.
Then you have to create a new mode using Project → Options (using
'BASE' as parent mode for the newly created mode,
enter the name of a file with exceptions (there is no need to specify
directory name!) into entry (at the bottom of that page)
with title "space-separated names of files to get list of
exceptions from" and check a checkbox to the left of it
(this will mean that the value of this option overrides the value in parent
mode), click Save and then go to Project ⇒
Files, put a checkboxes near files you wish these exceptions to be applied to,
then select a name of the newly-created mode in the popuplist at the bottom
and click Assign processing mode button. Then of course you will
have to rebuild the project.
Please do Project, Options and click "Delete project" button.
Please see
answer
for a related question.
The left checkbox behind some form element in the Project⇒Options specifies
whether the value of the option overrides the same value of it from the
parent mode (if checked - it overrides, if unchecked - the value of this
option from the parent mode is used).
So if the option itself has boolean value, then you see two checkboxes in
one line.
Create a file, e.g. named banner.txt with copyright notice inside a comment
and save it into project's input directory.
Go to Settings, Edit modes present in the project.., click on
"standard: treat as raw code "
item in the list, scroll to bottom, in "File-related options " section, find entry
"name of file with text to be prepended to the output"
put
banner.txt
into it and put a checkbox to the left of it (IT'S VERY IMPORTANT - this tells that we override
the same setting in the parent mode) and click Save.
To export project, open it, then do Project⇒Export as native. What you
export this way is a list of files and the options for modes.
To import it - just do Project⇒Import.
Project file is stored inside your user's directory - the name of file
it's stored in can be seen by going to Project⇒Options (there is a
small-printed file location there). You can just copy that file from/to
somewhere (and it's OK to rename it, keeping extension).
Also you will have to backup "project state directory" (specified in
project⇒options) - it contains exceptions, antiexceptions and symbol mapping
information.
Your project (and exported form of it) contains path to the project input,
project output and project state directory. If you'll want to relocate these
directories to different locations (e.g. after importing project), just go
Project⇒Options and edit paths there.
Due to this fact it's adviceable to give directories as relative paths
relative to project's input directory - this way you'll have less strings
to edit when relocating your project.
- Go to Settings, "Options - locations of dirs, title ..", modify title to something
like "new template", click OK.
- Do Project, "Export for backup (in native format)", save the file you've
downloaded to some location.
- Go to Settings, "Options - locations of dirs, title ..", revert title to original name,
click OK (otherwise during next step you'll get 2 projects with same name in Project, Open).
- Then do Project, "Import from backup", select the file you've saved backup to on a previous
step.
- Go to Project, Open - you'll see project named "new template" in the list, click on it.
- Go to Settings, "Options - locations of dirs, title ..", put real title and location
of input/out/state directories there.
- Go to Settings, "For files - assign modes to project's files". Click "Select All", click
"Stop Managing". This removes all files from the list (you need to do this to get rid
of filenames that were present in previous project).
- Go to Settings, "For files - assign modes to project's files". Click "Select All", click
"Add to Project". This will add files in the Input directory to the project; processing
mode will be assigned correctly to them.