《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Flash動畫的加密方法
Flash動畫的加密方法
2016年微型機(jī)與應(yīng)用第05期
呂光金
上海財(cái)經(jīng)大學(xué)浙江學(xué)院,,浙江 金華 321015
摘要: 隨著Flash動畫商業(yè)價值的不斷提升,,各種加密和解密軟件也應(yīng)運(yùn)而生,,如何有效地保護(hù)動畫作品是一個值得探討的問題。首先對Flash文件進(jìn)行了解析,,然后闡述了幾種保護(hù)Flash動畫的加密方法,并對幾款相關(guān)的加密軟件進(jìn)行了測試比較,得出用加殼打包類軟件進(jìn)行加密比較安全,。
Abstract:
Key words :

  呂光金

  (上海財(cái)經(jīng)大學(xué)浙江學(xué)院,,浙江 金華 321015)

      摘要:隨著Flash動畫商業(yè)價值的不斷提升,,各種加密和解密軟件也應(yīng)運(yùn)而生,如何有效地保護(hù)動畫作品是一個值得探討的問題,。首先對Flash文件進(jìn)行了解析,,然后闡述了幾種保護(hù)Flash動畫的加密方法,并對幾款相關(guān)的加密軟件進(jìn)行了測試比較,,得出用加殼打包類軟件進(jìn)行加密比較安全,。

  關(guān)鍵詞:Flash動畫;知識產(chǎn)權(quán)保護(hù),;加密,;特征提取

0引言

  Flash是Micromedia公司開發(fā)的一款動畫制作軟件。許多愛好者運(yùn)用Flash制作出優(yōu)秀的動畫作品,,并上傳至閃客帝國,、TOMFlash動畫頻道等專業(yè)網(wǎng)站進(jìn)行學(xué)習(xí)與交流,極大地推動了Flash等多媒體技術(shù)以及動畫的傳播與發(fā)展[1],。隨著Flash作品的商業(yè)價值的劇增,,各種加密和解密軟件也應(yīng)運(yùn)而生,個別用戶非法運(yùn)用解密軟件嚴(yán)重?fù)p害了用戶的知識產(chǎn)權(quán),。如運(yùn)用碩思閃客精靈軟件,,將SWF文件反編譯成FLA文件提取各個元素。為了防止作品未經(jīng)許可被盜用或惡意修改,有必要對SWF作品加密方法進(jìn)行研究,。

  關(guān)于動畫加密,,國內(nèi)外一些學(xué)者和公司進(jìn)行了相應(yīng)的研究,如Micromedia公司在Flash軟件中自帶了防止導(dǎo)入功能,?;鄯逍旁纯萍加邢薰狙邪l(fā)的網(wǎng)刃平臺支持對SWF文件和FLA文件的加密。文獻(xiàn)[2]對Flash動畫的內(nèi)容特征提取進(jìn)行了深入的研究,,并用VC++軟件開發(fā)了一個提取平臺,。文獻(xiàn)[4]提出了基于Flash動畫的信息隱藏算法。文獻(xiàn)[5]對SWF文件的版權(quán)保護(hù)設(shè)計(jì)了一個加密器,,在一定程度上防止了反編譯軟件的攻擊,。文獻(xiàn)[6]對基于AES的Flash加密方式進(jìn)行了研究。文獻(xiàn)[7]對運(yùn)用AESCCM模式進(jìn)行數(shù)據(jù)加密進(jìn)行了研究,。目前為止,,雖然理論研究較多,但是實(shí)踐很少,,對現(xiàn)有的軟件介紹幾乎沒有,,因此,本文先對SWF文件進(jìn)行解析,,然后對現(xiàn)有的SWF加密軟件和方法進(jìn)行探討與實(shí)踐,。

1Flash文件解析

  Flash能把文本、圖形,、圖像,、動畫、聲音,、視頻以及交互方式等融合為一個整體[1],,制作成基于“流技術(shù)”的動畫。 Flash動畫的文件格式主要有兩種,,即源文件格式(*.FLA文件)和播放文件格式(*.SWF文件),,源文件可以通過Flash動畫制作軟件修改和編輯,播放文件需要通過其他專業(yè)軟件反編譯后才能修改,,本文所指文件為SWF格式文件,。

  SWF文件與XML文件的內(nèi)部結(jié)構(gòu)相似[2],采用二進(jìn)制標(biāo)簽對動畫文件中的各個對象,、效果以及交互方式進(jìn)行定義,。SWF文件由三部分組成:文件頭(Header)、文件主體(Body,,由多個Tag組成),、文件結(jié)束標(biāo)簽(End Tag),,其結(jié)構(gòu)如圖1所示。

 

001.jpg

  文件頭定義了SWF動畫的基本信息,,如文件的版本,、文件大小、是否壓縮,、幀頻,、影格大小、總的幀數(shù)等[3],。SWF中的標(biāo)簽又可以分為定義型標(biāo)簽和控制型標(biāo)簽兩種,。標(biāo)簽的組織順序可以任意排列,但必須遵循先定義后引用,、先定義后控制的規(guī)則,,聲音流標(biāo)簽必須按順序播放,結(jié)束標(biāo)簽只能有一個,,而且必須是最后一個,。部分加密軟件是通過修改SWF的文件頭,從而導(dǎo)致SWF解析器在對SWF文件解析時出錯來達(dá)到加密目的,。

2Flash動畫加密方法

  傳統(tǒng)的數(shù)字版權(quán)保護(hù)主要有以下幾種:(1)通過在產(chǎn)品中內(nèi)置注冊體系的軟件保護(hù)方式,。(2)在外面加一個加密外殼,從而保證程序不被別人盜用或改寫,。(3)通過硬件方式對軟件產(chǎn)品進(jìn)行保護(hù),,主要采用USB卡,、加密狗等,。前兩種一般統(tǒng)稱為軟保護(hù)。第(3)種為硬件加密方法,,一般認(rèn)為硬件加密最安全,,但是必須用光盤分發(fā),不能通過互聯(lián)網(wǎng)大范圍傳播,,在SWF動畫加密中一般不采用,。

  2.1運(yùn)用Flash自帶的防止導(dǎo)入功能

  Flash作品的保護(hù)或加密,最原始的辦法就是防止導(dǎo)入,。即防止將SWF導(dǎo)入到Flash軟件中提取各種特征元素,。比如,當(dāng)把一份優(yōu)秀的SWF動畫發(fā)布到網(wǎng)上后,,經(jīng)過一段時間,,會發(fā)現(xiàn)動畫中的各種元素(Flash中稱為元件)出現(xiàn)在了別人的動畫中。為了防止導(dǎo)入Flash動畫提取元素,,可以通過Flash軟件本身的“防止導(dǎo)入”功能實(shí)現(xiàn)簡單的加密,。具體方法是,,在Flash “文件”菜單下,選擇“發(fā)布設(shè)置”命令,,然后選擇“Flash” 選項(xiàng)卡,,選取“防止導(dǎo)入”,在下面的密碼區(qū)輸入“防止導(dǎo)入”的密碼進(jìn)行發(fā)布,。該密碼只有在源文件中可以看到,。

  2.2運(yùn)用ActionScript編程

  在Flash軟件中,可以運(yùn)用ActionScript編寫代碼控制動畫的播放以及與用戶實(shí)現(xiàn)交互,,也可以通過編寫代碼對動畫進(jìn)行加密,。ActionScript是一種程序設(shè)計(jì)語言,它的語法結(jié)構(gòu)與JavaScript的語法結(jié)構(gòu)基本相似,,在播放時,,由Flash Player中的ActionScrip虛擬機(jī)來解釋并執(zhí)行[8]。Flash的最新版本是FlashCS6,,腳本語言為ActionScript3.0,,簡稱AS3。在用Flash制作動畫時,,可以運(yùn)用AS3腳本語言在程序代碼中設(shè)置口令,、時間鎖、地址限制,、屏蔽右鍵和限制下載等功能,。

  2.2.1設(shè)置口令或時間限制

  例如,下面的代碼實(shí)現(xiàn)了根據(jù)口令或在限定時間內(nèi)播放動畫的功能,。

  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");}}

002.jpg

  圖2Flash讀取XML文件過程這種代碼編寫方法通俗易懂,,安全性也較低??梢赃M(jìn)一步改進(jìn),,將密碼與時間存儲在獨(dú)立存放的XML文件中,然后通過讀取XML文件內(nèi)容生成密碼和比對時間,,但是程序編寫要復(fù)雜得多,。Flash讀取XML文件的內(nèi)容需要有路徑的定義、URL的請求和加載過程,,與讀取外部圖片或聲音的方法類似但調(diào)用的類不同,。讀取XML的過程如圖2所示。

  2.2.2運(yùn)用LoadMovie()命令

  在把Flash作品發(fā)布成SWF文件之前,,可以將源文件分割成多個子文件,,然后把各個.fla子文件分別發(fā)布成播放文件(如“child1.swf”、“child2.swf”等),,并放在不同的路徑下,,以相互嵌套的方式調(diào)用,,可以起到保護(hù)作品的作用。因?yàn)楫?dāng)該作品被其他用戶下載時,,用戶只能下載它的主文件,,而其他子文件不能被下載。運(yùn)用LoadMovie()函數(shù)調(diào)用Flash子文件的方法為:LoadMovie(“某路徑下的子文件childx.swf”,,“mySWF”),。其中的路徑可以是相對路徑或絕對路徑,x必須為具體數(shù)字,,如child1.swf,。

  2.3運(yùn)用Flash專業(yè)加密軟件

  運(yùn)用專業(yè)軟件對Flash作品進(jìn)行加密更安全,但是一般都需要付費(fèi),,如 GeneralEncryptor ,、Swfkit、DoSWF等,。這些軟件對SWF加密主要使用了動態(tài)內(nèi)存修改技術(shù)(DMM),、ActionScript 混淆技術(shù)、加殼打包技術(shù),、綁定硬件(CPU,、網(wǎng)卡、硬盤)技術(shù)等,。

  2.3.1動態(tài)內(nèi)存修改技術(shù)

  動態(tài)內(nèi)存修改技術(shù)類加密軟件有DoSWF,、Flashincrypt和SWFEncrypt等,它們都是SWF文件加密工具,,能防止SWF文件被反編譯成源文件,,通常使用動態(tài)內(nèi)存修改技術(shù)和腳本混淆技術(shù)進(jìn)行保護(hù)。DoSWF軟件采用一些工具做代碼混淆,,降低了程序的可讀性,,即使被破解了,也很難看懂,,這種方法其實(shí)可以稱之為加密代碼。但是加密后的文件會明顯變大,,為了避免加密后文件過大的問題,,可以在加密前先將FLA源文件分解并生成多個SWF文件,然后再進(jìn)行逐個加密,。

  2.3.2加殼打包技術(shù)

  Swfkit是一款優(yōu)秀的加殼打包軟件,,它不僅能創(chuàng)建 Flash播放程序或屏幕保護(hù)程序,而且能為它們建立安裝程序,。用該軟件打包的EXE文件不容易被還原,,因?yàn)樗虬母袷讲煌贔lash軟件中打包的EXE,,而且調(diào)用IE中的Flash控件進(jìn)行播放,因此,,F(xiàn)lashtool,、Exe2swf等軟件無法將其反編譯;利用碩思閃客精靈,、ImperatorFLA,、閃客精靈之錘等破解軟件也不能提取作品中的元素。常用的加殼打包類加密軟件還有網(wǎng)刃數(shù)字版權(quán)保護(hù)平臺,、FlashJestor,、Swfkit、Iceprojector,、Swishstudio等,。

  2.3.3硬件綁定模式

  GeneralEncryptor不僅支持SWF文件加密,而且也支持FLA文件加密,。用戶可以選擇不同的硬件綁定模式對用戶機(jī)器進(jìn)行綁定,,如選定CPU、主板,、Flash硬盤,、網(wǎng)卡等設(shè)備進(jìn)行“一機(jī)一碼”方式的授權(quán);它還支持水印效果,、播放次數(shù)限制,、有效期設(shè)置。常用的硬件綁定類加密軟件還有FlashEncryptor,、EasySWF,、SWFprojection等。

3幾種加密軟件的比較

  為了驗(yàn)證SWF加密軟件的功能,,制作了一個Flash動畫,,并選用了幾種常用加密和解密軟件的試用版進(jìn)行了相關(guān)實(shí)驗(yàn),結(jié)果如表1所示,。

003.jpg

  通過實(shí)驗(yàn)發(fā)現(xiàn),,(1)Exe2swf解密軟件功能較強(qiáng),能將Flash播放器生成的EXE文件解密成SWF文件,,并通過解析SWF文件讀取文件頭,,顯示文件的基本信息,包括:文件版本,、文件大小,、是否壓縮、影格大小,、影格比例,、總幀數(shù),。(2)SWFEncrypt、DoSWF等軟件的加密功能一般,,加密后生成的SWF文件明顯變大,,而且能被碩思閃客精靈解密并提取元素;(3)加殼打包類軟件的加密功能比較強(qiáng)大,,不能被Exe2swf解密,,只是加密后生成的EXE文件明顯變大。由此可知,,從安全角度考慮,,加密時建議選取加殼打包的方法。

4結(jié)束語

  本文針對Flash動畫的加密方法進(jìn)行了探討與實(shí)踐,。雖然市場上出現(xiàn)了各種各樣的SWF加密軟件,,但是仍無法抵制一些著名的專業(yè)解密軟件和破解方法。因此,,只有不斷增強(qiáng)全民的知識產(chǎn)權(quán)保護(hù)意識,,倡導(dǎo)購買或使用經(jīng)過授權(quán)的作品或軟件,才能將盜版現(xiàn)象降低到最低限度,。

參考文獻(xiàn)

 ?。?] 詹青龍,吳學(xué)會,宗哲玲. Flash二維動畫設(shè)計(jì)與制作[M]. 北京:清華大學(xué)出版社,,2010.

 ?。?] 徐振國,孟祥增.Flash動畫的內(nèi)容特征提取研究[J].電化教育研究,2015(6):5560.

 ?。?] 倪應(yīng)華,,金炳堯.SWF矢量動解析框架設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010(3):202205.

  [4] 張曉彥,,張曉明.基于Flash動畫的信息隱藏算法[J].計(jì)算機(jī)工程,2010(1):181183.

 ?。?] 王繼州,袁雪霞.一種SWF文件保護(hù)簡單實(shí)現(xiàn)方案[J].數(shù)字技術(shù)與應(yīng)用,2012(8):169171.

 ?。?] 鄒蕾. 基于AES的Flash加密實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2014(22):115116.

 ?。?] 仇國慶,包俊杰,,曹冬梅,,等. 基于AES算法的ZigBee網(wǎng)絡(luò)加密方法研究[J].電子技術(shù)應(yīng)用,2014,40(4):5658.

 ?。?] 陳銀鳳. Flash中利用Action Script3.0實(shí)現(xiàn)圖像的扭曲效果[J].微型機(jī)與應(yīng)用,2012,31(16):3537.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。