电脑网页手机版:用什么软件可以反编swf文件?

来源:百度文库 编辑:高校问答 时间:2024/05/04 16:45:19
能不能反编出完整的制作文件?如果不能的话能提取出其中的音乐也可以。

将任何一个SWF文件完美还原成FLA原始代码!”,笔者第一次看到此消息时有些震惊。在此之前,相信众多喜欢Flash动画的朋友都是使用SWF Scaner、闪客快斧、Action Script Viewer等来分解SWF文件内部的图片、音乐甚至动作脚本(Action Scripts)等信息,对于SWF还原为FLA文件,不会抱有太大的奢望,不过今天,这一切似乎成为了现实,究竟是什么软件拥有这么大的魔力?

是什么?

IMPERATOR °FLA是一个将SWF文件还原为FLA文件的工具。只要您的系统中安装有Macromedia Flash MX以上版本,就能够利用此软件将已经编译好的SWF文件还原成FLA源文件,这个FLA文件中包含所有的图片、影片、音乐甚至AS信息,您完全可以使用Macromedia Flash软件对其回炉再造,重新编译成需要的SWF文件。

是真的吗?

IMPERATOR °FLA的使用非常简单,在其官方网站(www.ave-imperator.com)可以下载最新的Demo版,若您的Windows中有Macromedia Flash MX(MX 2004)和DirectX 8以上版本,软件安装完毕后就会自动启动。关于软件的使用方法,大家可以看看相关的教程《利用第3方软件把“SWF”变为“FLA”》一文。

笔者首先使用IMPERATOR °FLA反编译了一款自己制作的简单Flash动画,这个动画只包含一些渐变的信息,没有使用任何AS。对比源文件(如图1)和使用SWF反编译生成的FLA文件(如图2),可以明显看到反编译后的文件生成了比源文件多的多的层,不过二者的库文件一模一样,编译导出的SWF文件效果也一样,只是中间实现的方法不同。

随后笔者又反编译了一个复杂的Flash动画,生成的FLA文件更加复杂,值得注意的是,IMPERATOR °FLA将一些遮罩与渐变的效果分解成了一帧帧的组件,但对于稍微有些Flash制作知识的朋友来说,很容易将这些换成补间动画。

由于Demo版的软件屏蔽了AS还原功能,所以笔者不能够考察IMPERATOR °FLA还原SWF文件中动作脚本的程度,不过从还原后重新编译生成的SWF文件与原作相同来看,IMPERATOR °FLA的能力非常出众,虽然它不能将SWF文件还原为与原始文件相同的FLA文件(中间实现方法有很大不同),但我们完全能够使用它来提取Flash动画中的所有素材并研究优秀Flash动画的实现方法。

实现分析

将SWF还原为FLA源文件,听起来是多么不可思议!不过从网上流行的各种语言的反编译器来看,SWF文件的反编译并不是什么新鲜事。

以Java语言为例,网上至少有3~4种Java语言的反编译器,据使用过的人说,其中有些反编译器效果极好,能把那些。class结尾的文件反的一点不差。而微软最新的。Net Framework由于采用了中间层,实现跨平台、跨语言的中间代码,并在类似虚拟机的环境中运行,导致了MSIL(微软中间语言)反编译为C#或VB.NET等源代码并非难事。再以Zend Encoder编译的PHP源程序为例,网上有Vulcan Logic Disassembler (pecl.php.net/package/vld)可以得到PHP执行时的操作码,若是有对PHP非常熟悉的高手,利用操作码还原PHP源程序也容易许多。

而所谓反编译,根据世界知识产权组织在《WIPO知识产权手册:政策、法律与使用》中的解释,是指一种对计算机程序进行复制和翻译,从而使其编码和结构可被观察和分析的方法。这种方法一般即指通过对计算机软件的目标程序的分析反推出其相应的源程序的过程。

IMPERATOR °FLA翻译了SWF中的编码,使其变得可读和可编辑,虽然与原来在结构上有所不同,但其反编译还是比较成功的。依我猜测,Action Script Viewer等Flash破解软件应该也能从技术上实现这种功能,只不过顾及到Macromedia公司版权的关系,才不“敢”将这些功能放到软件中,由此看来,IMPERATOR °FLA很有可能要承担侵权的风险。

实际上,也有很多人,包括Imperator °FLA已经注意到SWF文件的可反编译。在Imperator °FLA中有一个recovery-protection,可以向SWF文件中添加保护代码,以保护SWF不被Imperator °FLA反编译,一些专门的SWF ActionScript保护工具,如ActionScript Obfuscator (ASO)(www.genable.com/aso)也相继出现在网络上。