IO_SWF 2.2.7 をリリースしました

地味に改善を続けてます。

ChangeLog

  • swfcompress.php 追加。(FWS/CWS 相互変換)
  • swfversion.php 追加。(指定したバージョンより新しいタグやアクションを洗い出す)
  • Tag.php と Type/Action.php にタグ毎、アクション毎のバージョン情報を追加
  • FileAttribute のパーサを追加。
  • DefineFont3 のパーサを追加。(DefineFont2 と同じ)

swfcompress.php

SWF には CWS という圧縮形式がありますが、これを伸張して FWS にしたり、逆に圧縮して CWS に戻したりするツールです。
SWF5 から CWS という形式が追加されて、先頭8byteを残して後ろを zlib 圧縮するものですが、圧縮されてるとバイナリ解析や編集が面倒なので、用意しました。
(最近 zlib のビット列を目で伸張するのがしんどくなってきたし。)

$ php sample/swfcompress.php
PHP Notice:  Undefined index: f in /home/yoya/svn/IO_SWF/sample/swfcompress.php on line 14
Notice: Undefined index: f in /home/yoya/svn/IO_SWF/sample/swfcompress.php on line 14
Usage: php swfcompress.php -[cd] <swf_file>
ex) php swfcompress.php -c test.swf # compress
ex) php swfcompress.php -d test.swf # decompress
$ 

あ。。次のバージョンで直します。ファイル指定しないと警告でちゃう。

swfversion.php

$ php  sample/swfversion.php
Usage: php swfversion.php -f <swf_file> -v <version>
ex) php swfversion.php -f test.swf -v 4
$ php sample/swfversion.php -f actionpush.swf -v 3
SWF Version:4  Check Version:3
    Push:4
    Push:4
    SetVariable:4
    Push:4
    Push:4
    SetVariable:4
    Push:4
    Push:4
    SetVariable:4
    End:4
$  

こんな感じです。SWF を動的変換してると意図しないタグが紛れ込む事があるので、それを洗い出すツールですね。