随着SWF 文件格式和ActionScript Virtual Machine 2规范的公开,网络上出现了很多开源的SWF操作工具(Decompiler/Parser/Creater ),通过这些工具,可以完成分析AS、Flex、Flash等程序结构,提取算法、资源,混淆代码,动态生成SWF等各种功能。
简单比较一下典型的SWF操作工具:
Name | Dev Language | Read /write | support DoABC Tag | support other Tag | support Flash player9 | support Flash player10 | Reliability | Ease-of-use | Function |
Jswiff | Java | ○ | ○ | ○ | ○ | × | ★★★★☆ | ★★★★☆ | ★★★★☆ |
swfassist | Actionscript | ○ | ○ | ○ | ○ | ○ | ★★☆☆☆ | ★★★☆☆ | ★★★☆☆ |
as3c | C# | ○ | ○ | × | ○ | × | ★★★★☆ | ★★★★★ | ★★★☆☆ |
hxformat | haXe | ○ | ○ | ○ | ○ | ○ | ? | ? | ? |
综述:
1.Jswiff目前综合能力是最好的,不过主页现在打不开了(is dead?)。svn还能访问,它的Jswiff 9 分支提供了对DoABC Tag的解析,目前只支持Flash 9.
java系中还有Adobe flex sdk中自带的swfutils,实现了对swf文件的读(dump)(包括对DoABC Tag的解析)。
2.swfassist是spark的一个子项目,功能比较全面。它的abc-extended分支提供了对DoABC Tag的解析,不过对其可用性表示怀疑,简单读写一次SWF文件没有成功。
actionscript系中对swf解析的工具比较多,不过大部分现在停止更新了。
3.as3c整个设计架构和code非常漂亮,如果看不懂ActionScript Virtual Machine 2规范的话,不如看看as3c的代码。不过它只关心Actionscript。
4.heformat(SWF、ABC)由haXe语言所写,还没有使用过haXe语言,不过对其代码精简能力留下了深刻的印象。