2009年01月23日
Tamarin の abcdump.as から abcdump.exe を作成する方法 2009年1月版
abcdump.exe を作った方法をメモしておく。Windows での話。
完成品の abcdump.exe はこちら。
使い方
abcdump xxxx.abc
xxxx.abc って何?
ABC は ActionScript ByteCode のこと。SWF の中には ActionScript のソースコードを abc に変換したものが埋め込まれている。
xxxx.abc を作成するには次のような2つの方法がある。
asc.jar を使って xxxx.as から変換する
- このあとの 3. あたりを参照
- Sprite とか MovieClip とかを含むコードは asc.jar ではビルドできないはず
既存の SWF から abc を取り出す
- SWF からがんばって abc を取り出す方法
- (参考)OSS で SWF をデコンパイルする(2) - swfassist と abcdump で亜流デコンパイラ
(追記)Mac OS X 版と Flash 10 対応版も登場
- Mac OS X 版
- Mac OS Xで(も)tamarinのabcdump.asからabcdump.exeを作る:nod::ぶろぐ:RIA::Flex/AIR/Flash
- Flash 10 対応版 (Windows 用)
- Adobe AlchemyはFlashの隠し命令を使っているみたい - yukobaの日記
.
以下、abcdump.exe の作り方。
1. Tamarin のソースコードを入手する
- Mercurial をインストールしていない場合は hg.exe を導入する (ダウンロード元:BinaryPackages - Mercurial)
- hg を実行してソースを拾ってくる。
$ hg clone http://hg.mozilla.org/tamarin-central tamarin-central
- 落ちてくるまでしばし待つ
(参考) Tamarin Build Documentation - MDC
2. asc.jar を入手する
Flex SDK の lib フォルダに入ってる。
全部持ってくるのが面倒な人は、SVN 上の http://opensource.adobe.com/svn/opensource/flex/sdk/branches/3.2.0/lib/ からダウンロードするといいと思う。
3. abcdump.as から abcdump.abc を作る
- tamarin-central/core/builtin.as を abc に変換する
java -jar asc.jar core\builtin.as
- tamarin-central/shell/ByteArray.as を abc に変換する
java -jar asc.jar -import core\builtin.abc shell\ByteArray.as
- tamarin-central/utils/abcdump.as を abc に変換する
java -jar asc.jar -import core\builtin.abc -import shell\ByteArray.abc utils\abcdump.as
java の実行に失敗する場合は java のバージョンが古いのかも。最新の JRE をダウンロードしておくべし。
(参考) 5 1/2 blog ≫ AS3 decompiler
4. avmplus で実行
abcdump.abc を実行するには avmplus.exe が必要。avmplus.exe は tamarin のソースを Visual C++ でビルドしたら作れるのだけど、Flex SDK のソースに付いてくるので今回はこれを使う。
avmplus abcdump.abc -- xxxx.abc
5. avmplus と結合して abcdump.exe を作る
avmplus がないと動かないのが面倒なので、avmplus と結合して abcdump.exe を作っちゃう。
java -jar asc.jar -exe avmplus.exe -import core\builtin.abc -import shell\ByteArray.abc utils\abcdump.as
これで abcdump.exe ができた。