Saturday, May 15, 2010

SWF Cry - A Free online swf Encryption/Obfuscation tool!

================================================
UPDATE 2010_8_03
SWF Cry v0.02 released:
http://bruce-lab.blogspot.com/2010/08/swf-cry-v002-released-protect-your-swf.html
================================================



I wrote this simple swf Encryption/Obfuscation tool - SWF Cry, in about two weeks' spare time.
The UI is powered by minimalcomps (http://www.minimalcomps.com/).
It can obfuscate names of packages, classes, functions and variables (Thanks to makc3d!).
It can also pack your swf into a packer/shell to prevent your swf being decompiled directly.
The (un)encryption scripts are written in C via adobe alchemy so it's very hard to unpack it simply by decompile the packer.
SWF Cry is in a very primary status now (v0.01); this is only an unstable prerelease version. It has many bugs and other serious problems. It may do damage to your swf and even crash the browser or the flash player. Please backup your files before testing it. TRY IT AT YOUR OWN RISK!
(Possible) Features of the next release (v0.1):
1. Fewer bugs
2. Better UI
3. Better execution efficiency and lower memory usage
4. Domain lock
5. Junk code injection
6. Prevent swf being extracted from RAM

TUTORIAL - How to use it:
1. Choose your main swf to be encrypted
Press “Browse _SWF” button to upload your swf.
2. Choose your water mark swf
Press “Browse _WaterMark” button to upload your water mark.
If you don't need a water mark, uncheck “Use _WaterMark”.
You can set the water mark swf's x, y, scaleX, scaleY and alpha properties.
Change the “LinkTo” url to your sites and the final output swf will have a water mark navigates to your sites when you click it.
3. Obfuscate
Edit the names list there; add names that you wish to be changed to random strings.
Use comma (",") to separate names.
If you don't want to obfuscate, uncheck "Obfuscate".
4. Pack
Edit the name (default CryOut.swf) after “OutPut_SWF_Name”. That's the encrypted swfs name. You can't change it after the encrypted swf is created.
If you don't want to pack your swf, uncheck “Pack”.
Notes: if you uncheck “Pack” and “Obfuscate both, SWF Cry will do nothing. Make sure at least one is checked.
5. Save the encrypted swf
Press “Cry_and_Save” button to begin the encryption process, please wait a while till it's done and then you can save the encrypted swf.
6. Save your config
Press “Save_Config” button to save your current config, you can load your config by “Load_Config”. The saved config is an xml file, you can edit it manually.
7. Test your output swf, if you only see a blank swf, try unchecking Pack.
If the player throw errors such as “can't find definition... check the obfuscate names list, make sure no as3 key words there!
8. Add a preloader for the encrypted swf (To-Do)

KOWN ISSUES:
1. Only as3, AVM1 swfs (as2,as1) are not fully supported currently. (But you can try your luck!)
2. Sometimes swfs access net files won't run on a local computer after Pack.
3. If your swf accesses stage, add code below in your main class's constructor function:

if(stage==null){this.addEventListener(Event.ADDED_TO_STAGE,onAdded);} else {init();}
function onAdded(event:Event){init();}function init(){}

Otherwise, the packed swf will throw errors.
Go here (http://www.flashandmath.com/intermediate/swfload/docclass.html) for details.
4. You can't rename the packed output swf anymore (the file name is protected)
5. Many other small bugs...
Bugs, ideas, requirements, just drop a comment!

Links:
1. Flash Protection Gold
Version 1.42 (Free / Full features) Now!
http://www.avimpeg.net/flash_protection.htm
2. http://makc3d.wordpress.com/2010/02/09/open-source-swf-obfuscator/
6. http://www.swfdecrypt.com/ Unprotect SWF Files
7. some SWF encryptors are worthless
8. http://flashfreeprotection.blogspot.com/ (A tool that protect your flash files from most of the decompilers, for free!)

Sponsors