Flash Decompiler Trillix review

When you compile a Flash project, you know you create a swf file.

Such file is created according to the SWF File Format Specification so you can create your IDE and develop your Flash projects without using the official Adobe Flash CS4 package.

Since you can compile your own swf file, there is also a way to decompile it.

Flash Decompiler Trillix is the most advanced tool to convert swf to fla, with full support of Flash 10 and AS3.

Legal and ethical dilemma

As you must know, different Countries have different laws about copyrights. Even Wikipedia does not provide enough information about reverse engineering legality.

On the ethical side, you should respect developers’ work and don’t try to decompile their projects and “get inspired” from their code or use their graphics.

But it would be a big hypocrisy saying I’d never take a look to someone else’s secrets. If I could access to Coca-Cola formula or Google’s PageRank algorithm, I would.

Definitively.

My personal experience

As some of you know, I am the co-founder of a web company… you know… hosting, web apps, web sites, SEO and all those things you normally can’t talk about with women.

Recently we acquired a new customer with a Flash site. A well designed Flash site, I have to say. The problem was the company behind the project did not survive the economy breakdown and closed some months ago.

The customer needed some minor changes in the site and renewing the domain (and changing the hosting) but he never got a reply at the emails he sent to the old company owners.

That’s what happen when you rely on cheap companies (hint)

So we made two proposals, at two (very) different prices

1 – Redesigning the site making it as close as possible to the original one

2 – Decompiling the site and making the required changes

You can imagine the choice and finally I am ready to start the review

Decompiling test

I am testing this tool on the movie you can see at Pure AS3 magnifying effect using Displacement Map Filter.

The interface is just brilliant:

you can preview the movie, look at its properties and browsing its assets at the same time.

You can export single images as well as chuncks of codes, but the most interesting feature is the conversion from swf to fla.

And that’s what I did

Do you remember my original library?

well, the one created by Flash Decompiler Trillix is even more organized…

but the most interesting test is performed on the scripts:

this is the original one:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package {
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.filters.DisplacementMapFilter;
	import flash.geom.Point;
	import flash.events.Event;
	public class as3displace extends Sprite {
		// creating a new Bitmap variable
		var the_bitmap:Bitmap = new Bitmap();
		// creating a variable to store "malecon" image.
		// notice you MUST specify width and height or you'll get an error
		// 1136: Incorrect number of arguments.  Expected 2.
		var the_image=new malecon(500,373);
		// creating a variable to store the "displace_movie" movieclip
		var the_displace:displace_movie=new displace_movie();
		// creating a point at the upper left corner
		var starting_point:Point=new Point(0,0);
		// creating a 100x100 bitmap data, that will contain the gradient movieclip
		var displacement_map:BitmapData=new BitmapData(100,100,true,0x808080);
		// creating the displacement map filter
		var displacement_filter:DisplacementMapFilter=new DisplacementMapFilter(displacement_map,starting_point,1,2,50,50,"color",0x000000,1);
		public function as3displace() {
			// assigning the "the_image" data (the photo) as bitmapData of "the_bitmap" variable
			the_bitmap.bitmapData=the_image;
			// in the displacement map, draw (copy) the content of "the_displace" movieclip
			// (the gradient sphere)
			displacement_map.draw(the_displace);
			// placing "the_bitmap" on the stage
			addChild(the_bitmap);
			// listener that triggers at every frame
			addEventListener(Event.ENTER_FRAME, onFrame);
		}
		public function onFrame(e:Event) {
			// changing the starting point of the displacement map filter according to mouse position
			starting_point.x=mouseX-50;
			starting_point.y=mouseY-50;
			displacement_filter.mapPoint=starting_point;
			// applying the displacement filter to "the_bitmap" (the photo)
			the_bitmap.filters=[displacement_filter];
		}
	}
}

and this is the one generated by Flash Decompiler Trillix

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package 
{
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.geom.*;
 
    public class as3displace extends flash.display.Sprite
    {
        public function as3displace()
        {
            this.the_bitmap = new flash.display.Bitmap();
            this.the_image = new malecon(500, 373);
            this.the_displace = new displace_movie();
            this.starting_point = new flash.geom.Point(0, 0);
            this.displacement_map = new flash.display.BitmapData(100, 100, true, 8421504);
            this.displacement_filter = new flash.filters.DisplacementMapFilter(this.displacement_map, this.starting_point, 1, 2, 50, 50, "color", 0, 1);
            super();
            this.the_bitmap.bitmapData = this.the_image;
            this.displacement_map.draw(this.the_displace);
            addChild(this.the_bitmap);
            addEventListener(flash.events.Event.ENTER_FRAME, this.onFrame);
            return;
        }
 
        public function onFrame(arg1:flash.events.Event):*
        {
            this.starting_point.x = mouseX - 50;
            this.starting_point.y = mouseY - 50;
            this.displacement_filter.mapPoint = this.starting_point;
            this.the_bitmap.filters = [this.displacement_filter];
            return;
        }
 
        var displacement_filter:flash.filters.DisplacementMapFilter;
 
        var the_displace:displace_movie;
 
        var the_image:*;
 
        var starting_point:flash.geom.Point;
 
        var displacement_map:flash.display.BitmapData;
 
        var the_bitmap:flash.display.Bitmap;
    }
}

It’s a bit different, but it works the same way

Final considerations

A personal license costs $79.95, both for PC and Mac OS, and all in all is a must-have if you are a Flash developer. Besides strange cases like the web company one I discussed before, it’s really a tool that can save you hours and hours should your fla file get damaged or lost.

Really recommended. For more information and purchase options, go to www.flash-decompiler.com.

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (9 votes, average: 4.11 out of 5)
Loading ... Loading ...
If you found this post useful, please consider a small donation.
» Flash Templates provided by Template Monster are pre-made web design products developed using Flash technology.
They can be easily customized to meet the unique requirements of your project.

12 Responses to “Flash Decompiler Trillix review”

  1. Jerry on August 13th, 2009 6:25 pm

    I have used it for several years now as I had a hard drive crash and lost a Flash project I had spend a week working on for a client to demo a product at a trade show and commercial for the same product. The program did the trick and I was able to get the client the files on time without starting over.

    I don’t have it installed or have I used it since then but it is in my collection should I ever need it again.

  2. Luiz Fernando on August 13th, 2009 10:01 pm

    Heck, decompilers has saved me hours of lost work more than once.

  3. HiddenSpartan on August 14th, 2009 1:11 am

    Adobe Flash sucks for Actionscript development. Flex + FlashDevelop works much better.

  4. VideoGuy on August 14th, 2009 5:43 am

    Do you know if SWFs with encryption can be decompiled with this, or are they more secure?

  5. whiteblot on August 14th, 2009 10:54 am

    good question VideoGuy. I’ve never tried to decompile other ppl works as I consider it ethically wrong. I guess – with encrypted file you can still get decopiled code but much more messy. AFAIK the idea behind encryption in swf files is not to make decompiling impossible but to make it as difficult as possible, so one who is trying to steal our code will give up :)

  6. watch the cleveland show online on August 14th, 2009 11:04 am

    Although some people will use these tools maliciously they do come in handy when you have either deleted the fla or your hard drive has decided to die on you.

  7. ickydime on August 14th, 2009 2:08 pm

    its true, decompilers can save a hell of a lot of time.

    but don’t make it sound like its just peachy perfect:

    1. The organization of the library that you tout is absolute crap when it comes to larger projects. Trying to find one sprite in a list of hundreds named Sprite# is tedious at best. Feature Request: Name the sprites according to their Class Name. Organize them in folders according to their Class Path. If they have no name and no path, then Sprite# is probably the best you can do.

    2. Code does not come out crystal clear as your example shows. You run into some confusion when addressing function variables… they are named something generic and given a number. Nothing trillix can do about this one so I will move on. However, there are some edge cases where code actually gets altered and does not compile until addressed. Or worse, compiles but is slightly off. I reviewed SoThink Decompiler a year ago: http://blog.ickydime.com/2008/08/sothink-swf-decompiler-thoughts-bugs.html and speak about this problem in the review. Trillix gave me a free copy to review afterwords but it was so similar to SoThink that I ended up not doing the review…

    With all that said, it still saves you a hell of a lot of time. I just think people should be aware that it is not magic, it has limitations, and you should still expect to do hours (if not days) of rework trying to find things and fix decompiler bugs.

  8. Awoke on August 14th, 2009 7:31 pm

    Decompilers really works, but the only problems is that it creates, at least for me, hundreds of new Layers, I had to make few editions, but it worked nice with me. :]

  9. Ruslan on August 15th, 2009 12:43 am

    I have used Trillex . Only problem is when loading external files .I know it can’t decompile it :))

  10. John on August 15th, 2009 1:40 am

    People have been inspired/stealing code from each other since the dawn of the internet.
    Personally I don’t think there’s anything like copyright on the internet and that’s the way it should remain.

    If I was to decompile someone ealses work it would be purely for the sake of learning from professional developers. I think that alone justifies decompling.
    However I don’t care for ripping code and call it my own without a clue on how the script really functions. That’s where I draw the line as far as ethics are concerned.

  11. Josh on August 17th, 2009 8:29 am

    There are free decompilers, as well. You just don’t get the swf-to-fla conversion or the ease of use.

  12. jairus on September 21st, 2009 2:50 pm

    question, how does one decompile in AS3 ? i can’t see the property that allows for AS3 decompilation. the default settings is giving me AS1 code.

Leave a Reply




flash games company