See the power of Flash decompilers and of secureSWF

The following piece of code is widely used when creating a loader for a movie. This is what we wrote in the FLA file. We will compile and then decompile this twice, before and after using secureSWF.


if(_root.getBytesLoaded() == _root.getBytesTotal())
    _root.gotoAndStop('EnterFrame');
else {
    percentage = Math.round((_root.getBytesLoaded()*100)/_root.getBytesTotal());
    percent = "Loading: " + percentage + "%";
    preloadbar._xscale = percentage;
}


Decompiled code without secureSWF

After compiling, we ran the SWF file though a publicly available Flash decompiler. As shown below, the result was totally identical to the original code. Imagine if someone did this to your product!


if (_root.getBytesLoaded() == _root.getBytesTotal()){
    _root.gotoAndStop('EnterFrame');
} else {
    percentage = Math.round((_root.getBytesLoaded()* 100) / _root.getBytesTotal());
    percent = ("Loading: " + percentage) + "%";
    preloadbar._xscale = percentage;
}

Decompiled code after using secureSWF

We ran the SWF file though the same decompiler again, but this time after using secureSWF. How related is the decompiled code after using secureSWF to the original code?


if (false) {
    if (!(true and true)) {
    }
getURL ("�", "\f");
do {
    // swfAction0x5F  // Unknown action
    // swfAction0x72  // Unknown action
    // swfAction0x6F  // Unknown action
    // swfAction0x6F  // Unknown action
    // swfAction0x74  // Unknown action
    // swfAction0x74  // Unknown action
    // swfAction0x79  // Unknown action
    // swfAction0x74  // Unknown action
    // swfAction0x73  // Unknown action
    // swfAction0x6C  // Unknown action
    } while  (() or (() >>> (() | (() << (() | (() ^ (() >> (() | (() >>> ())))))))));
    // branch @2

With your product protected by secureSWF, their job is now more complicated!


» Purchase secureSWF