Talking about Actionscript 3 and Flash.
More than a year ago I blogged about how important is to protect, encrypt and sitelock your Flash games using the most updated tool like Kindi‘s secureSWF.
I installed the new version – 4.0 Professional – today to update my games on MindJolt due to Facebook new policy and it’s working great as usual.
More than 100 new features have been added and although I have to admit I use the sotware only with standard preset protection and sitelock I messed around with encryption and optimization settings and everything always worked fine, moreover there is an huge help section to guide you through fitting the software to your needs.
I also appreciated a lot the “Launch SWF files afer protection” checkbox to have the swf launched once encrypted. Yes, it’s just a button but it saved me a lot of time, showing me the result without forcing me to navigate through the hundreds folders opened on my desktop.
And now, a little test, trying to decrypt the first step of my Blocky Christmas prototype.
This is the original class:
package {
import flash.display.Sprite;
import flash.geom.Point;
public class Main extends Sprite {
private var tileSize:Number=25;
private var gameField:Array=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]];
private var player:Point=new Point(5,9);
private var playerGoal:Point=new Point(9,13);
private var blocks:Array=[{shape:[new Point(7,3),new Point(8,3),new Point(9,3),new Point(10,3),new Point(11,3)],color:0x339900},{shape:[new Point(8,4),new Point(9,4),new Point(10,4)],color:0x00cc00}];
private var goals:Array=[{shape:[new Point(7,15),new Point(8,15),new Point(9,15),new Point(10,15),new Point(11,15)]},{shape:[new Point(8,14),new Point(9,14),new Point(10,14)]}];
public function Main() {
displayGame();
}
private function displayGame():void {
graphics.clear();
graphics.lineStyle(1,0x000000,0.2);
for (var i:Number=0; i
This is the same class ripped from the swf file using the latest decompiler available:
package {
import flash.display.Sprite;
import flash.geom.Point;
public class Main extends Sprite {
private var tileSize:Number=25;
private var gameField:Array=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]];
private var player:Point=new Point(5,9);
private var playerGoal:Point=new Point(9,13);
private var blocks:Array=[{shape:[new Point(7,3),new Point(8,3),new Point(9,3),new Point(10,3),new Point(11,3)],color:0x339900},{shape:[new Point(8,4),new Point(9,4),new Point(10,4)],color:0x00cc00}];
private var goals:Array=[{shape:[new Point(7,15),new Point(8,15),new Point(9,15),new Point(10,15),new Point(11,15)]},{shape:[new Point(8,14),new Point(9,14),new Point(10,14)]}];
public function Main() {
displayGame();
}
private function displayGame():void {
graphics.clear();
graphics.lineStyle(1,0x000000,0.2);
for (var i:Number=0; i
But once I encrypted it with the standard settings and only tried to access the actionscript on the decompiler, it crashed and sent me back to the desktop. Obviously, the game still works.
If you are looking for a software to protect your Flash files like if you hired the whole Avengers team, then Kindi's secureSWF is your tool.
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.