ContentIntroductionKindisoft secureSWF v3.0 beta 3 has the following suite of features to help you protect your intellectual property in the most convenient way:
InstallationTo install secureSWF, simply extract the files into any folder you want. After that, you can start using secureSWF by doubleclicking secureSWF.exe in Windows, secureSWF.app in OS X, and secureSWF in Linux (you might need to make the file executable first). secureSWF does not make any changes to your system (we think of this as a feature). Therefor, you can uninstall it by simply deleting the folder. Minimum RequirementsThe minimum requirements of secureSWF are:
Using secureSWFThe Graphical User Interface of secureSWF consists of four main sections; Project Files, Identifiers Renaming, Protection Options, and Operations' Summary.
Project FilessecureSWF is designed to handle either a single SWF file or multiple SWF files that interact together. The Project Files section allows you to add the SWF file(s) that you wish to protect. To get started, click on the "Add" button and select the SWF file(s) that you wish to protect. Or, alternatively, drag the SWF file from your file browser into secureSWF.
Once you've added the SWF file(s), you will notice that secureSWF starts analyzing the code and automatically determining the best obfuscation settings. You will also notice that the there are a number of statistics about the SWF file(s) that you've added in the bottomright groupbox. Now, you can directly click on the "Protect SWF Files" button on the upperright corner to protect and save the SWF files. Or, optionally, select one of the Protection Presets that suites you. Saving The FilesYou can select the method of saving the generated, protected, SWF file(s) using the options in the "Output Settings" groupbox. This step is optional since secureSWF will ask for the saving options when you click on the "Protect SWF Files" buttons if they were not set. The following is a description of each method:
Protection PresetsYou can avoid digging deeper into the settings by selecting one of the Protection Presets. You can set secureSWF to generate the most aggressively protected SWF files or to generate a smaller SWF file size. The following is a detailed explanation of each preset:
Most Aggressive: Standard (default): Safe: Best Size: Testing: Identifiers RenamingOne of the most powerful features of secureSWF is its ability to rename just about every identifier in your SWF file from variables and functions names to frame labels and symbol names in addition to AS3 and AS2 classes. Not only that, but secureSWF automatically determines the identifiers that are safe to rename and the identifiers that are not. secureSWF has the ability to rename the following identifiers:
To enable Identifiers Renaming make sure that the Rename Identifiers checkbox is checked. There are 6 tab pages (2 for AS3) in the Identifiers Renaming section:
Renaming LevelsecureSWF will help you determine which identifiers are safe to rename. You can change the renaming level from normal to either to rename everything or to only rename identifiers which were never referenced by a literal string in anyway. Renaming RulesYou can add rules to exclude (or include) a set of identifiers from
renaming. Rules will override your other selections as well as secureSWF's
automatic selection. Additional RenamingOptions in Additional Renaming renames or removes identifiers that do not appear in the identifiers tree and tables:
PostBuild WarningsWhen you process the SWF files (by clicking on the "Protect SWF Files" button), secureSWF will check if there are still strings in the SWF files that matches any of the identifiers. If a string matches an identifier, a warning dialog will appear. It is recommended to click "Deselect and Reprocess" in this case. secureSWF will automatically handle this for you when "Automatically handle warnings" is checked. Back to the topCode ProtectionCode TransformationsecureSWF offers four different methods to protect your source code from reverseengineering and decompiling that can be applied separately or together. Each protection method is compatible with all the Flash players from v5 to v9 and has been tested separately to break all the known decompilers and disassemblers. The following is a description of each method, along with its advantages and disadvantages:
Statement-level Randomization
Randomly restructures the bytecode instructions that makes up an ActionScript statement making it almost impossible decompile the source code. The performance and file size effects of this method depend on the source code. A block of code that has no branches (for example, ifstatements, forloops, or function definitions) will become smaller in size and will execute faster. On the other hand, extra bytecode instructions will be added to handle the branches which has negligible impact on the performance and increase in the SWF file size. Control Flow ObfuscationAdds extra branches to the bytecode that distracts decompilers and disassemblers. This method increases the SWF file size depending on the selected intensity. You can set the intensity between 10% and 100%; a 10% intensity generates a smaller SWF file while a 100% intensity generates a more protected SWF file. Our testing results have shown that even a 10% intensity will break all known decompilers most of the time. Dynamic Code WrappingWraps the ActionScript blocks with branches and junk bytes that effectively distracts decompilers and disassemblers. The size and performance impact of this method is negligible. You can set Code Wrapping to three levels; minimum, medium, and maximum. The degree of code wrapping will determine the size of the added code. Use maximum code wrapping for maximum protection, and minimum to get a smaller file. Break Function CallsMakes it much harder for a decompiler to find out what parameters are being passed to a function call. Back to the topOptimizationsecureSWF implements many code optimization algorithms that will enhance the performance and reduce the SWF file size. Enabling Remove metadata will remove all metadata in bytecode. Literal String EncryptionWhile obfuscation protects the code logic, valuable data such as access passwords and sensitive URLs remain in the SWF file as clear text. Malicious users can simply open the SWF file using a text editor (decompress the SWF file if compressed) and view the literal strings that exist in your code. secureSWF allows you to select the literal strings in your SWF file, encrypt them in the SWF file using a very secure symmetric encryption algorithm, and decrypt them only when needed at runtime. Please note that this entails an added overhead each time the string is accessed. To use this features, look up the strings in the table. It shows all the literal strings, the number of occurrences, and their location. Simply, check the strings that you wish to encrypt. Back to the topEncrypted Domain LockingInserting an encrypted domain lock to your SWF file(s) will greatly decrease the chances of having the movie being played offline. The movie will simply refuse to play if it was copied to a different location than that it has been locked to. For example, if you locked your movie files to "http://www.mywebsite.com/myflashmovie/", then the movie will only play if it is being launched from that location. If someone managed to copy the SWF file(s) somewhere else (i.e. PC, another website ...etc), then the movie will not play at all. What makes this feature powerful enough to rely on is that the locations (URLs) that you locked the movie to are encrypted inside the SWF files and will only be decrypted at runtime. This makes finding out what is happening, and changing it, a very time and effort consuming task to a level that recreating the movie from scratch is usually easier.
To use Encrypted Domain Locking add the domains or URLs that you want to lock the files to. Make sure to add all the URLs that you want the user to be able to access the SWF file through. To make users able to run the SWF files on their local machines, add "file" for ActionScript 2 and "localhost" for ActionScript 3. Back to the topEncrypted Loader CreatorThis tool will help you to highly decrease the chances of having your SWF files downloaded or used offline. It simply creates a new SWF file which dynamically loads your original SWF file into it. To increase this feature's power and reliability, the name and location of the original SWF file are encrypted. In addition to that, you can change the extension of the original SWF file into any random string (i.e. .mp3 or .js). This will make finding the original SWF file in the browser cache a much harder task. The main important gain from using this tool is that users who will try to use SWF rippers (grabbers) will not be able to download the original SWF file at all. Back to the topUsing the Encrypted Loader Creator Tool
First of all, it is important that the settings of the created loader match the settings of the original SWF file you wish to load. You can start by clicking on "Load Movie..." and selecting the original SWF file so that the "Encrypted Loader Creator" tool would be able to extract its settings. After that, you can optionally create a copy of the original file using another file extension (i.e. .mp3 instead of .swf). To do so, check the "Load a copy of the movie" check box, then fill in the file name and choose from the dropdownlist an extension, or type in any extension you prefer. Changing the file extension is highly recommended. The next step is to make sure that the URL field is exactly what the loader is going to load. It could be just the file name, if the original file and the loader are going to be in the same folder, or the full URL (file path) of the original file that will be loaded. Finally, you can optionally make adjustments to the loader settings. The following table explains each option:
Stack Trace DeobfuscatorThis tool will help you translate error message from AS3 based obfuscated SWF files when running them in the stand-alone Flash Player. You will find this tool very handy in troubleshooting. There is an XML mapping file generated for every protected file when the option Generate mapping table is enabled. The mapping file name follows the pattern protectedFileName_map.xml and is saved in the same path as the protected file. To use this tool, click on browse and select the mapping table for the file that generated the error. And then paste the error message from the Flash Player in the text area and click Trace. This will deobfuscate the error message showing the identifiers in their original names. Back to the topTroubleshootingAfter protecting your SWF files, we highly recommend to test them. If the protected files are not functioning properly, then one or more of secureSWF protection options requires further tuning. Please follow these simple steps to find out what went wrong.
Identifiers Renaming TroubleshootingWhile secureSWF tries to automatically deselect identifiers that cause problems when renamed, some identifiers will still slip away and require you to manually deselect them. First of all, please set identifiers renaming Level to Safe
and make sure that Automatically handle warnings and Generate
mapping table are checked. Process the files, if the protect
files are still not working properly then please follow the
following steps:
Commandline InterfacesecureSWF has a commandline interface that could be used for batch execution and build process integration. Using the CLI is different on each platform: WindowsYou can use the commandline interface in two forms:
ssCLI.exe Project_file Output_folder [override_options]
Or
ssCLI.exe SWF_file Output_folder [options]
The options will override the project settings and secureSWF's defaults as the following:
For example:
ssCLI.exe myProject.sspj c:\output -slr:off -controlFlow:50
-wrap:3
Will load the SWF files and settings for the project file, turn off Statement-level Randomization, set Control Flow Obfuscation to 50%, set Dynamic Code Wrapping to maximum, and save the protected files in the folder c:\output. You can use the first letter only of each option (except for -safe). Back to the topOS XUsing v3.0 beta 3 CLI in OS X is not as convenient as we want it to be yet, we apologize for that and promise to enhance it very soon. You can use the commandline interface in two forms:
ssCLI Project_file Output_folder [override_options]
Or
ssCLI SWF_file Output_folder [options]
The options will override the project settings and secureSWF's defaults as the following:
For example:
ssCLI.exe myProject.sspj c:\output -slr:off -controlFlow:50
-wrap:3
Will load the SWF files and settings for the project file, turn off Statement-level Randomization, set Control Flow Obfuscation to 50%, set Dynamic Code Wrapping to maximum, and save the protected files in the folder c:\output. You can use the first letter only of each option (except for -safe). Back to the topLinuxYou can use the command-line interface in two forms:
ssCLI Project_file Output_folder [override_options]
Or
ssCLI SWF_file Output_folder [options]
The options will override the project settings and secureSWF's defaults as the following:
For example:
ssCLI.exe myProject.sspj c:\output -slr:off -controlFlow:50
-wrap:3
Will load the SWF files and settings for the project file, turn off Statement-level Randomization, set Control Flow Obfuscation to 50%, set Dynamic Code Wrapping to maximum, and save the protected files in the folder c:\output. You can use the first letter only of each option (except for -safe). Back to the top |