快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

把SWF反编为FLA 的技术的讨论

  将任何一个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)也相继出现在网络上。

   利弊

   要了解和学习一个软件所包含的思想和原则,必须对软件的源程序进行分析;要获得该软件的各种参数,开发能与该软件兼容的软件也必需获得软件的源程序。然而,为了在市场竞争中取得优势,软件的开发者一般不会将源程序公开。因此,对软件进行反编译就成了软件开发技术人员常常采用的方式。

   反编译在软件教学、科研、开发等场合都是一种异常重要的手段。在教学和科研中,为了学习国外先进的软件设计理念,我们常常需要把国外一些机构和个人开发程序反编译来进行分析和借鉴;早期的汉化兴趣者把外文版的软件进行反编译,找到目标菜单的源代码,然后把汉语写进去替换相应的外文,汉化人填入汉语的长度不得超过原文的长度,不足的可用空格补齐,然后再进行编译,最终完成外文软件的汉化(现在使用的都是利用了上述汉化原理开发出的专门汉化工具);而在与病毒的斗争中,虽然每个研究人员的工作方法不同,但他们使用的技术是类似的:例如在编译环境下执行病毒程序,观察病毒的行为方法,使用反编译工具分析代码结构。与上述情况类似,有了SWF文件的反编译工具,我们就可以更加方便的学习经典Flash的制作方式,从技术和设计思想上提高整体的Flash设计水平。

   不过反编译的弊端也显而易见,这类工具落到一些不尊重其他人劳动成果的“小人”手中,会成为其剽窃的利器,这种侵权行为我们将在下面讨论。

   侵权?

   对软件或者Flash作品的反编译,无疑会引起版权冲突,那么,毕竟反编译是否违背版权法?我们怎样才能利用反编译来学习先进的设计理念和技术手段,以提高自己的水平?那就要从著作权保护的原则和相关法律来进行分析。

   世界知识产权组织在《WIPO知识产权手册:政策、法律与使用》中认定:软件合法用户对软件进行反编译的行为,只要不利用所获取的信息开发相似的软件,并不会与著作权所有人正常使用软件冲突,也不会对著作权所有人的合法权益造成不合理的损害。各国政府基本上都使用此原则对侵权案件进行审理,如美国、欧盟、中国的相关法律部门都认为:只要反编译并非以复制软件为目的,在实施反编译行为的过程中所涉及的复制只是一种中间过渡性的复制,反编译最终所达到的目的是使公众可以获得包含在软件中不受著作权保护的成分,这样的反编译并不会被认为是侵权。

   根据以上原则和相关法律,我们对软件和Flash作品进行反编译,以学习其思想、处理过程、操作方式、数学概念等不属于侵权。也就是说只要你的反编译目的纯良(即只是出于学习的目的),在法律上就不视为侵权。但假如你将反编译用于其它目的,比如制作成其他产品进行销售,就侵犯了原作者的著作权。

   也就是说,我们使用IMPERATOR °FLA来反编译SWF到FLA文件,来研究Flash动画的设计思想、使用技术,并不构成对原作者的侵权,不过需要注重的是,在这款Flash作品中原创的一些图形、整体表现形式(SWF成品的版权)是受著作权保护的。

   笔者并不是著作权方面的法律专家,所了解的也只是一些皮毛,只能泛泛而谈,感爱好的朋友可以到中国知识产权司法保护网(www.chinaiprlaw.com)阅读相关文章,尤其是一些汉化人士。

   道德

   既然说到了侵权,就不能不探讨一下软件开发和作品设计中的道德问题。我们可以通过反编译的手段学习某款软件或作品的设计思想,不过将别人的软件或作品反编译并进行修改后,加上自己的版权信息,不仅违背了著作权法,就是从道德上也令人不齿,前段时间闹得沸沸扬扬的QQ万勇版修改自木子版事件,以及恶名昭著的MwIE浏览器都是此类典型,对于这类不道德甚至违法的行为,希望网友们能够共同抵制。

   技术从来都是一把双刃剑,将反编译合理使用,将有利于打破国外超级软件企业对软件技术的垄断,有利于中小软件企业开发出更多具有兼容性的软件,从而促进软件产业的健康发展。对于侵权的、不合理的反编译应用,除了计算机使用者的鄙视和抵制外,完善的法律是解决问题的有效途径。


返回类别: Flash教程
上一教程: Flash MX 2004实例制作视频教程:五彩苹果(下)
下一教程: Flash游戏制作:点击可弹动的小球

您可以阅读与"把SWF反编为FLA 的技术的讨论"相关的教程:
· 如何防止SWF文件被反编译?
· Flash透视技术之鸡蛋里面的世界
· 网页设计中制作Flash站点的技巧
· Flash Action attachMovie外部swf中的元素
· Flash声音高级篇:NullSound技术-1
    微笑服务 优质保证 索取样品