[SWF-convert] PHPを使ってSWF情報の取得

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

SWF変換を行う前にSWFのSDKを熟読する必要がある。
Adobeサイトで公開されている事は知っているが、今までまともに読んだことが無かった。

ググってみると、偶然に知り合ったyoyaさんのサイトが山のように出てくる。

どうやら、最近まあまあ流行っているらしいFlash変換エンジンの技術の入り口に立てたようである。

SWFデータのdump

yoyaさんのブログを見ると載っているソースコードを利用して、local環境でSWFファイルの内容をdumpして見てみたいと思う。

ライブラリと実行プログラムの2つが必要なので、下記を作成

dump.php

yoyaさんのソースですが、冒頭の箇所はswfファイル指定できるように改造しています。

BitReader.php

yoyaさんのライブラリをそのまま掲載しています。
SWFバイナリ編集のススメ第一回

実行

Tag-typeがたくさん表示されるが、SWFは上部の固定HEADER部分とコンテンツ内容でもあるTag部分の2ブロック構成なのである。

Header詳細

Headerは非常に簡単な構成で、バイナリファイルとしてもアドレス固定なので、分解はし易いと思います。

Signature

「FWS」と「CWS」の2パターンしか存在せず、分かりやすい情報です。
SWFをパブリッシュする時に「圧縮」オプション設定がされているかどうかの判別用です。
圧縮されている場合はTag部分が圧縮されているので解凍処理を行なってから分析しなければいけないので、CWSは面倒くさいとおぼえておきましょう。

FWS:非圧縮
CWS:圧縮

Version

Flash-version

FileLength

データ長

FrameSize

SWFの画面サイズ

Xmin: 0
Xmax: 240
Ymin: 0
Ymax: 240

FrameRate

指定されたフレームレート

FrameCount

フレーム数

Tags

画像や動画、音声などの情報や、フレームやshape情報、ActionScript情報などが格納されているので、ここの中を整理することで、SWFの解析ができるという事なんですね。

各種link

Adobe SWF SDK
Flash SWF バイナリ

他にも有志はたくさんいますが、上記サイトでかなり深いところまで勉強できます。
※yoyaさんのソースコードにはお世話になっています。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です