irrFuscator
irrFuscator is an ActionScript 3 obfuscator for flex developers. It will protect swf and air applications
as well as their source code, is very fast and provides excellent results. irrFuscator is available for the
command line but also comes with a convenient GUI frontend. Just download and go.
The graphical frontend to the irrfuscator commandline tool.
What does it do
The ActionScript 3 Byte Code (abc) in .swf files still contains a lot of symbols revealing how your
program works and what it does, so it is very easy to reverse engineer or steal your code.
irrFuscator reads in a directory of .as and .mxml files, processes them and puts them out into a
target directory. Simply recompile the directory with the obfuscated files and your .swf files are
a lot safer.
irrFuscators current features are:
- Obfuscation: It changes the names of functions, methods, constants, interfaces and classes using a deterministic or
not deterministic naming scheme if wished.
Unlike other basic source level obfuscators, irrFuscator will also rename your classes (and the files they are located in accordingly).
- String encryption: Strings in your code are automatically encrypted if wished.
- Built-In flex call recognition: irrFuscator will not obfuscate calls to any of the flex libraries so your code will compile of course.
- Optional automatic stripping of code comments and/or whitespace: If you want to give away your source code, this option is very useful.
- Speed: irrFuscator is written in C++ and needs only about 10 seconds to obfuscate one megabyte of source code on a standard developer PC.
- Tested: irrFuscator is used by huge flex based projects like the Darkness Springs Role Playing game which
contains more than 100.000 lines of code.
- Obfuscation exceptions: If you need a symbol to be visible outside of your code or you are using dynamic classes,
you can specify any symbol not to be obfusctated. In this way, irrFuscator can also be used with the flash development environment
where you have a .fla file and several .as files. (irrfuscator will only obfuscate the .as files)
Example
The following code demonstrates what irrfuscator usually does. The file MapResourceManager.as contains some plain as3 code:
import flash.utils.ByteArray;
// a resource manager specialized for maps
public class MapResourceManager extends ResourceManager
{
public static function canLoadResWithIndex(idx:int):Boolean
{
// if the resource is null, it cannot load
return getResFromIndex(idx) != null;
}
public static function loadResString(idx:int):String
{
var cl:Class = getResFromIndex(idx);
if (!cl)
return "error";
// convert the data into a text string with
// 'end' suffix.
var data:ByteArray = new cl as ByteArray;
return data.toString() + "end.";
}
} // end class
Symbol names like 'MapResourceManager', 'ResourceManager', 'canLoadResWithIndex', 'getResFromIndex', etc
would still be visible in the compiled swf file.
After obfuscating the code, irrFuscator would generate a file named '_wm3952.as' which would look like
this:
import flash.utils.ByteArray;
public class _wm3952 extends _lc4996
{
public static function _fi5847(idx:int):Boolean
{
return _ya7618(idx) != null;
}
public static function _dm6121(idx:int):String
{
var cl:Class = _ya7618(idx);
if (!cl)
return irrcrpt(87, "kzrd");
var data:ByteArray = new cl as ByteArray;
return data.toString() + irrcrpt(23, "uzd.");
}
}
But of course, irrFuscator can do additional source level obfuscation if wished, which is very useful when
source code needs to be given away:
import flash.utils.ByteArray; public class _wm3952 extends _lc4996 {
public static function _fi5847(idx:int):Boolean { return _ya7618(idx)
!= null; } public static function _dm6121(idx:int):String { var cl:Class =
_ya7618(idx); if (!cl) return irrcrpt(87, "kzrd"); var data:ByteArray =
new cl as ByteArray; return data.toString() + irrcrpt(23, "uzd."); } }
Download
Download irrFuscator from the irrFuscator download page.