フリーで使えるFlash(SWF)のコンパイラ・逆コンパイルツール

逆コンパイルというとアレな感じなのですが、どうしても逆コンパイルが必要な時ってありますよね。

たとえばswfだけあってソースが無いFlashの移植開発だったり、
ソースをもらえないFlashと通信するシステム開発でデバッグの時に逆コンパイラでFlashから.flaや.asなどソースが取得できれば
随分効率が違います。

また、デコンパイラ・コンパイラ両方の機能を備えているものも多く、
Adobe 製品を使わずに無料でFlash開発する事も可能です。

コマンドラインでSWFを分解・再構成できるツールを使うと
SWFを素材として扱い、Flashを動的に生成する必要のあるWebサービス・プログラムを作成する事も可能になります。

ということで、無償で使える(一部有料ソフトもあり)のコンパイラ・逆コンパイラを紹介します。

hugflash (windowsのみ)

カハマルカの瞳と同じ作者のフリーソフトウェア。ASや画像・音声リソース等をswfから抽出できます。
ASのクラスもちゃんと抽出してくれました。ASを無料で逆コンパイルするならこれが一番。

使い方:
HugFlash.exeを起動して、HugFlashのウィンドウ上で右クリック → モード → HugDimensionを設定しておき、ウィンドウに対象swfをドラッグ&ドロップ。

Flare(win/mac OS 10.3/Linux)

SWFデコンパイラ。メンテナンスされていないのかFlashの対応バージョンが古い(Flash MX まで)です。
参考: Flareの使用方法

swfmill(win/mac/linux)

SWFをXML形式のアセンブラに逆コンパイル・再コンパイルするツール。
SWFとSWFをロスなく相互変換ができ、負荷もそれほどかからないのでFlashを動的に生成するときにも便利です。
XML記述を覚えれば単体で簡単なSWF作成もできますし、他のSWFもリソースとして使用できるのでSWFを合成することもできます。
実際にあった事例として、業務でサーバプログラム(PHP)で動的なFlashを生成するときに利用したこともあります。

使い方:
$ swfmill swf2xml source.swf dest.xml # SWF(バイナリ) から XML(アセンブラ) に変換
$ swfmill xml2Swf source.xml dest.swf # XML(アセンブラ) から SWF(バイナリ) に変換

参考:
swfmillでケータイFlashを動的生成してみよう(インストール編)
swfmill – simple で扱う XML の書式 – タグ一覧

Flasm(win/mac/linux)

SWFのアセンブラ変換ツール。swfmillと組み合わせるといい感じ。
参考:Flashで覚えるアセンブラ・スタックマシン入門(Flasm)(1) – Flashのアセンブラ Flasm を使ってみよう

SWFTools(win/linux)

画像や動画からswfを作ったり、逆に分解したりするコマンドラインツール集。デコンパイルより生成が得意な感じです。

参考:swftoolsを使ってみる

Sothink SWF Decompiler (win/mac)

これだけ有料で、安くもないのですが、かなり高い精度で swf から .fla を生成することができます。
リソース取り出しや部分的な置き換えは他のフリーソフトでも十分ですが、
SWF を元に .fla を作りなおす必要があるときはこのツールが約に立つでしょう。

体験版でも使用可能ですが、体験版には以下の利用制限があります。

1. Exporting Video type resources is disabled in unregistered version.
(未登録版ではビデオタイプのリソースをエクスポートできません。)

2. In the unregistered version, only TWO resources in each category can be exported.
(未登録版では1カテゴリあたり2つのリソースまでしかエクスポートできません。)

3. Viewing all ActionScript is supported, but copying and pasting are unavailable.
(すべてのアクションスクリプトの表示をサポートしていますが、コピーとペーストは不可能です。)

4. The unregistered version allows you to replace SWF elements and preview the result, but “Save” and “Save as” functions are prohibited for saving the new SWF files.
(未登録版はSWFエレメントの置換実行とその結果確認ができますが、新しいSWFとして保存する機能(“Save”や”Save as”)は禁止されています。)

5. In the trial version, all the decompiled resource files and ActionScripts can be viewed clearly and it is enough for you to test the software performance.
(体験版では、デコンパイルされた全てのリソースファイルとアクションスクリプトをはっきり見ることができるので、十分にソフトウェアのパフォーマンステストを行えます。)

他にも、解析用ツールとしてはAdobe純正でフリーで使えるAdobe SWF Investigatorというものもあるようです。
Adobe、Adobe AIR製のSWF解析ツール「Adobe SWF Investigator」をプレビュー公開

ここで紹介したツールはそれぞれ得手不得手があり、できることも様々ですので用途に応じて使い分けるのがよさそうですね。