|
SWF EncryptionSWF encryption (or byte-code obfuscation) makes decompiled ActionScript confusing and harder to understand. It's not really encryption, but in the context of code, it might be better. Although actual encryption can make your code completely unreadable, it suffers from a classic encryption flaw, it needs to keep the decryption-key with the encrypted data. An automated tool could be created to decrypt the code. Once that happens the fully unencrypted, unobfuscated code is in plain view. Stop Flash DecompilersWith all of that said, this should not be a showstopper. secureSWF implements four very effective SWF encryption techniques to protect SWF files against decompilers that can be applied by many orders of magnitude, How secureSWF's SWF Encryption WorkssecureSWF manipulates the byte-code instructions in SWF files using techniques to foil, and even crash, Flash decompilers preventing them from generating anything useful, while leaving the Flash application's behavior and output intact. Here is an example where we applied some of the techniques and luckily, one of the decompilers generated something for us to demonstrate (all others crashed):
Code before Obfuscation
private function getNeighbours(i:int, j:int):Array{
var a:Array = new Array(); for (var k = 0; k < 8; k++){ var ni = i + int(neighbour_map[k][0]); var nj = j + int(neighbour_map[k][1]) ; if (ni < 0 || ni >= xsize || nj < 0 || nj >= ysize) continue; a.push(Cell(cells[ni][nj])); } return a; } Code after Obfuscation
private function getNeighbours(_arg1:int, _arg2:int):Array{
var _local3:Array = -(((null - !NULL!) % ~(undefined))); var _local4:*; var _local5:*; var _local6:*; _local3 = new Array(); _local4 = 0; for (;//unresolved jump , _arg2 < 8;_local4++) { _local5 = (_arg1 + int(!NULL!)); _local6 = (_arg2 + int(!NULL!)); if (true){ _arg1 = (((//unresolved nextvalue or nextname << !NULL!) + !NULL!) << undefined); _arg1 = (!(!NULL!) ^ !NULL!); (!NULL! instanceof !NULL!); var _local1 = (((!NULL! as !NULL!) + !NULL!) == this); if (!(!NULL! == !NULL!)){ -((true << !NULL!)).push(Cell(cells[_local5][_local6])); } } if (!true){ (_local6 < 0); (_local6 < 0); (_local5 < 0); } } return (_local3); } What secureSWF's SWF Encryption Does?secureSWF can do the following to stop Flash decompilers:
Our Users Say
Jacob Miller - MotionVR
|