Capprime Lua Obfuscator Documentation
The Capprime Lua Obfuscator is a simple string replace type of obfuscator that replaces function names and
local variables with gibberish.
Beginning of the line comments after the "--" comment symbol are stripped (mid line comments are currently not stripped). White space at the beginning of lines is eliminated.
Once a function name or local variable is identified for obfuscation, a string search is run over the entire
text to replace those strings whether they are used in that same context or not.
Variable names of length one are not touched. They are theoretically already obfuscated and don't work with string replacement.
For the most part, global variables are not touched, unless they share a name with a local variable in the submitted code.
Substrings can be problematic and are strongly discouraged. In general, substrings of lua reserved words will not be obfuscated.
While the obfuscator has plenty of room for improvement, it is almost always possible to modify the submitted source code to work around
issues in the obfuscator.
FAQ:
Currently, you can obfuscate only 3000 characters at a time, and only 6000 characters per day (from a single IP address).
Yes, it is logged in order to fix bugs (that are often not submitted by users). Also, the data is used to help improve
the FAQ and Known Issues documentation.
Not (legally) that I know of.
You (presumably) own the copyright to that code, so Capprime Software has no rights to the code unless you explicitly grant rights to Capprime Software.
It depends on if users express interest in a commercial version.
Maybe, eventually. It is a logical option for the product roadmap, but there are significant development
and support costs involved in its creation and release.
Known Issues:
1) Non local variables are not obfuscated.
Workaround:
Declare all variables as local that can be declared as local.
If necessary, create a dummy function that just declares a global variable as a local variable,
thus qualifying the global variable name for obfuscation.
Example:
Before:
globalVariable1 = "blah"
After:
globalVariable1 = "blah"
function DummyMethod()
local globalVariable1
end
2) Substrings will sometimes not be replaced correctly.
For example, if you have a local variables name "counter" and a global variable named "counter1" and "counter" is slated to become
"kj2352", "counter1" will become "kj23521".
Try to avoid function names and variable names that are (case insensitive) proper substrings (i.e. use counter1 and counter2 instead).
3) Strings inside quotes will be obfuscated if they match a function name or local variable that is marked for obfuscation.
For example:
local hello = "hello"
Try to use function and variable names that are not common words that would show up in strings or file names or library names, etc.