Flash动画的加密方法(Flash动画的加密方法)

吕光金

(上海财经大学浙江学院,浙江 金华 321015)

摘要:随着Flash动画商业价值的不断提升,各种加密和解密软件也应运而生,如何有效地保护动画作品是一个值得探讨的问题。首先对Flash文件进行了解析,然后阐述了几种保护Flash动画的加密方法,并对几款相关的加密软件进行了测试比较,得出用加壳打包类软件进行加密比较安全。

0引言

Flash是Micromedia公司开发的一款动画制作软件。许多爱好者运用Flash制作出优秀的动画作品,并上传至闪客帝国、TOMFlash动画频道等专业网站进行学习与交流,极大地推动了Flash等多媒体技术以及动画的传播与发展[1]。随着Flash作品的商业价值的剧增,各种加密和解密软件也应运而生,个别用户非法运用解密软件严重损害了用户的知识产权。如运用硕思闪客精灵软件,将SWF文件反编译成FLA文件提取各个元素。为了防止作品未经许可被盗用或恶意修改,有必要对SWF作品加密方法进行研究。

关于动画加密,国内外一些学者和公司进行了相应的研究,如Micromedia公司在Flash软件中自带了防止导入功能。慧峰信源科技有限公司研发的网刃平台支持对SWF文件和FLA文件的加密。文献[2]对Flash动画的内容特征提取进行了深入的研究,并用VC 软件开发了一个提取平台。文献[4]提出了基于Flash动画的信息隐藏算法。文献[5]对SWF文件的版权保护设计了一个加密器,在一定程度上防止了反编译软件的攻击。文献[6]对基于AES的Flash加密方式进行了研究。文献[7]对运用AESCCM模式进行数据加密进行了研究。目前为止,虽然理论研究较多,但是实践很少,对现有的软件介绍几乎没有,因此,本文先对SWF文件进行解析,然后对现有的SWF加密软件和方法进行探讨与实践。

1Flash文件解析

Flash能把文本、图形、图像、动画、声音、视频以及交互方式等融合为一个整体[1],制作成基于“流技术”的动画。 Flash动画的文件格式主要有两种,即源文件格式(*.FLA文件)和播放文件格式(*.SWF文件),源文件可以通过Flash动画制作软件修改和编辑,播放文件需要通过其他专业软件反编译后才能修改,本文所指文件为SWF格式文件。

SWF文件与XML文件的内部结构相似[2],采用二进制标签对动画文件中的各个对象、效果以及交互方式进行定义。SWF文件由三部分组成:文件头(Header)、文件主体(Body,由多个Tag组成)、文件结束标签(End Tag),其结构如图1所示。

文件头定义了SWF动画的基本信息,如文件的版本、文件大小、是否压缩、帧频、影格大小、总的帧数等[3]。SWF中的标签又可以分为定义型标签和控制型标签两种。标签的组织顺序可以任意排列,但必须遵循先定义后引用、先定义后控制的规则,声音流标签必须按顺序播放,结束标签只能有一个,而且必须是最后一个。部分加密软件是通过修改SWF的文件头,从而导致SWF解析器在对SWF文件解析时出错来达到加密目的。

2Flash动画加密方法

传统的数字版权保护主要有以下几种:(1)通过在产品中内置注册体系的软件保护方式。(2)在外面加一个加密外壳,从而保证程序不被别人盗用或改写。(3)通过硬件方式对软件产品进行保护,主要采用USB卡、加密狗等。前两种一般统称为软保护。第(3)种为硬件加密方法,一般认为硬件加密最安全,但是必须用光盘分发,不能通过互联网大范围传播,在SWF动画加密中一般不采用。

2.1运用Flash自带的防止导入功能

Flash作品的保护或加密,最原始的办法就是防止导入。即防止将SWF导入到Flash软件中提取各种特征元素。比如,当把一份优秀的SWF动画发布到网上后,经过一段时间,会发现动画中的各种元素(Flash中称为元件)出现在了别人的动画中。为了防止导入Flash动画提取元素,可以通过Flash软件本身的“防止导入”功能实现简单的加密。具体方法是,在Flash “文件”菜单下,选择“发布设置”命令,然后选择“Flash” 选项卡,选取“防止导入”,在下面的密码区输入“防止导入”的密码进行发布。该密码只有在源文件中可以看到。

2.2运用ActionScript编程

在Flash软件中,可以运用ActionScript编写代码控制动画的播放以及与用户实现交互,也可以通过编写代码对动画进行加密。ActionScript是一种程序设计语言,它的语法结构与JavaScript的语法结构基本相似,在播放时,由Flash Player中的ActionScrip虚拟机来解释并执行[8]。Flash的最新版本是FlashCS6,脚本语言为ActionScript3.0,简称AS3。在用Flash制作动画时,可以运用AS3脚本语言在程序代码中设置口令、时间锁、地址限制、屏蔽右键和限制下载等功能。

2.2.1设置口令或时间限制

例如,下面的代码实现了根据口令或在限定时间内播放动画的功能。

stop;

Daylimit=new Date(2016,1,1);

todayDate=new Date;

_root.onEnterFrame =function{

if(Key.isDown(13)){

if(a=="password")||(todayDate<Daylimit)

{ fscommand("fullscreen","true");gotoAndPlay(2);}

else fscommand("quit","true");}}

Flash动画的加密方法(Flash动画的加密方法)(1)

图2Flash读取XML文件过程这种代码编写方法通俗易懂,安全性也较低。可以进一步改进,将密码与时间存储在独立存放的XML文件中,然后通过读取XML文件内容生成密码和比对时间,但是程序编写要复杂得多。Flash读取XML文件的内容需要有路径的定义、URL的请求和加载过程,与读取外部图片或声音的方法类似但调用的类不同。读取XML的过程如图2所示。

2.2.2运用LoadMovie命令

在把Flash作品发布成SWF文件之前,可以将源文件分割成多个子文件,然后把各个.fla子文件分别发布成播放文件(如“child1.swf”、“child2.swf”等),并放在不同的路径下,以相互嵌套的方式调用,可以起到保护作品的作用。因为当该作品被其他用户下载时,用户只能下载它的主文件,而其他子文件不能被下载。运用LoadMovie函数调用Flash子文件的方法为:LoadMovie(“某路径下的子文件childx.swf”,“mySWF”)。其中的路径可以是相对路径或绝对路径,x必须为具体数字,如child1.swf。

2.3运用Flash专业加密软件

运用专业软件对Flash作品进行加密更安全,但是一般都需要付费,如 GeneralEncryptor 、Swfkit、DoSWF等。这些软件对SWF加密主要使用了动态内存修改技术(DMM)、ActionScript 混淆技术、加壳打包技术、绑定硬件(CPU、网卡、硬盘)技术等。

2.3.1动态内存修改技术

动态内存修改技术类加密软件有DoSWF、Flashincrypt和SWFEncrypt等,它们都是SWF文件加密工具,能防止SWF文件被反编译成源文件,通常使用动态内存修改技术和脚本混淆技术进行保护。DoSWF软件采用一些工具做代码混淆,降低了程序的可读性,即使被破解了,也很难看懂,这种方法其实可以称之为加密代码。但是加密后的文件会明显变大,为了避免加密后文件过大的问题,可以在加密前先将FLA源文件分解并生成多个SWF文件,然后再进行逐个加密。

2.3.2加壳打包技术

Swfkit是一款优秀的加壳打包软件,它不仅能创建 Flash播放程序或屏幕保护程序,而且能为它们建立安装程序。用该软件打包的EXE文件不容易被还原,因为它打包的格式不同于Flash软件中打包的EXE,而且调用IE中的Flash控件进行播放,因此,Flashtool、Exe2swf等软件无法将其反编译;利用硕思闪客精灵、ImperatorFLA、闪客精灵之锤等破解软件也不能提取作品中的元素。常用的加壳打包类加密软件还有网刃数字版权保护平台、FlashJestor、Swfkit、Iceprojector、Swishstudio等。

2.3.3硬件绑定模式

GeneralEncryptor不仅支持SWF文件加密,而且也支持FLA文件加密。用户可以选择不同的硬件绑定模式对用户机器进行绑定,如选定CPU、主板、Flash硬盘、网卡等设备进行“一机一码”方式的授权;它还支持水印效果、播放次数限制、有效期设置。常用的硬件绑定类加密软件还有FlashEncryptor、EasySWF、SWFprojection等。

3几种加密软件的比较

为了验证SWF加密软件的功能,制作了一个Flash动画,并选用了几种常用加密和解密软件的试用版进行了相关实验,结果如表1所示。

Flash动画的加密方法(Flash动画的加密方法)(2)

通过实验发现,(1)Exe2swf解密软件功能较强,能将Flash播放器生成的EXE文件解密成SWF文件,并通过解析SWF文件读取文件头,显示文件的基本信息,包括:文件版本、文件大小、是否压缩、影格大小、影格比例、总帧数。(2)SWFEncrypt、DoSWF等软件的加密功能一般,加密后生成的SWF文件明显变大,而且能被硕思闪客精灵解密并提取元素;(3)加壳打包类软件的加密功能比较强大,不能被Exe2swf解密,只是加密后生成的EXE文件明显变大。由此可知,从安全角度考虑,加密时建议选取加壳打包的方法。

4结束语

本文针对Flash动画的加密方法进行了探讨与实践。虽然市场上出现了各种各样的SWF加密软件,但是仍无法抵制一些著名的专业解密软件和破解方法。因此,只有不断增强全民的知识产权保护意识,倡导购买或使用经过授权的作品或软件,才能将盗版现象降低到最低限度。

参考文献

[1] 詹青龙,吴学会,宗哲玲. Flash二维动画设计与制作[M]. 北京:清华大学出版社,2010.

[2] 徐振国,孟祥增.Flash动画的内容特征提取研究[J].电化教育研究,2015(6):5560.

[3] 倪应华,金炳尧.SWF矢量动解析框架设计[J].计算机系统应用,2010(3):202205.

[4] 张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程,2010(1):181183.

[5] 王继州,袁雪霞.一种SWF文件保护简单实现方案[J].数字技术与应用,2012(8):169171.

[6] 邹蕾. 基于AES的Flash加密实现[J].电脑编程技巧与维护,2014(22):115116.

[7] 仇国庆,包俊杰,曹冬梅,等. 基于AES算法的ZigBee网络加密方法研究[J].电子技术应用,2014,40(4):5658.

[8] 陈银凤. Flash中利用Action Script3.0实现图像的扭曲效果[J].微型机与应用,2012,31(16):3537.

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页