非顯示字符和混淆器
除了阻礙反編譯器的技術之外,我們還可以使反編譯的結果不容易讀。你可以瀏覽關于混淆器的網(wǎng)站。
基本上,它是對變量和函數(shù)的名字進行重命名。
function -3(-4){trace(-4);} function -1(0,-2){ if(0<-2){-3(1);} }
肯定的是,偷竊者不能僅僅是拷貝、粘貼就能使用這些代碼。編譯器不允許你對一個函數(shù)進行這樣的命名。
混淆器的局限是改變函數(shù)的名字可能給下面的腳本代碼帶來麻煩。
function myFun(){trace("myFun");} a="my"; b="Fun"; this[a+b]();
另一個技術是使函數(shù)的名字不可顯示。比如,用漢字作為函數(shù)名,反編譯器可能就會不能很好的顯示它。然后,我們便會看到:
function ?(){?,?){?.?=?;}
ASV 4使用unicode編碼顯示不可顯示字符,所以,結果是易讀的,只不過增加了點輕微的難度。
自我保護
如果你找到一個很好的方法來保護自己的SWF不備反編譯,不要與別人分享這個方法,至少不要再因特網(wǎng)上公開它。當然,它不能過100%的防反編譯,至少對我來說是這樣。但是,不是所有的人都對SWF的格式了如指掌。許多,偷竊者僅僅只會借助軟件來反編譯SWF。因此,如果你的目的是盡可能少的偷竊者能夠偷竊你的SWF,那么請保護好你的(白虎SWF的)秘密方法。
只是在此提醒你,你的SWF是無保護的。對于熟悉SWF格式的人來說,所有東西都是毫無遮掩的。如果你的目標只是保護“一些函數(shù)”的話,它應該是安全的。他們未必會竊取你的函數(shù),他們會編寫自己的函數(shù)。
通用保護措施
我們在網(wǎng)站上放了個聯(lián)機游戲,不幸的是,許多訪問者只是訪問我們的站點僅僅一次而已,然后利用下載的版本來離線玩。有時,我們甚至發(fā)現(xiàn)我們的游戲出現(xiàn)在其他的站點上。
為了避免這種情況發(fā)生,下面是可采取的保護措施:
1. 所屬領域檢查
編寫腳本檢查_url,如果_url是"http://www.myDomain.net/game.SWF"就播放影片,否則不播放或者退出。當離線播放的時候,_url應該像"file://C| someSub/game.SWF";但它在其它domain中時,_url就形如"http://www.others.net/game.SWF"。因此,這個技術可以恰當?shù)募由弦恍┍Wo。當然,對于心存不良的反編譯者來說是無用的。那些腳本可以借助Flasm來刪除或者修改為不檢查。盡管在其它公開場合未必能看到被破解的SWF文件,但是離線也能夠播放的SWF就可能發(fā)生上述情況。
2. 服務端口令驗證
編寫腳本,并且在開始游戲時從服務端加載密碼。如果密碼為空,則停止游戲或者退出游戲。這很容易被懷有惡意的用戶破解,他們只要編輯SWF文件,將那些腳本刪除即可。哪些腳本不可以被刪除呢?當開始游戲時,從服務端加載的地圖數(shù)據(jù)是進行游戲必須的,所以心存不良的用戶不可能刪除這些腳本。為了進行游戲,它必須提供這些地圖數(shù)據(jù)。當然,它可以從緩存在臨時文件夾中的數(shù)據(jù)中挑選地圖數(shù)據(jù),提供給SWF,從而激活游戲。
3.將SWF或者變量置于服務端
這是第二種技術的擴展、延伸,該技術已經(jīng)廣泛的使用著。起初的游戲(SWF)文件只是個裝載器,當單擊播放(或開始)按鈕后,將加載另一個SWF文件。當需要地圖文件的時候,便從服務端加載地圖數(shù)據(jù)。當加載數(shù)據(jù)遇到阻礙時,將從服務段再次加載受到阻礙的SWF文件。新層上的數(shù)據(jù)也是從服務端傳過來。
從這兒。我們可以看到一個原則:防止反編譯的最好方法是“不給”。
如果一些愚蠢的竊賊只下載game.SWF文件,他不可能玩這個游戲。 他需要在緩存中挑選出所有的SWF文件和變量。打開所有的SWF文件,編輯這些變量的名字,使它與緩存中的變量的名字一致。
如果我們的地圖由CGI隨機產(chǎn)生,那么竊賊只可能擁有一份地圖,他沒有隨機產(chǎn)生地圖的權力。如果是個迷宮游戲的話,充其量,他只能玩一個迷宮,他沒有“動態(tài)產(chǎn)生迷宮”的功能。如果心存不良的用戶玩這個游戲將碰到一個新的阻礙,因為在他的緩存中沒有這個新的受到阻礙的SWF文件,所以將無法進行游戲。
因此,許多算法和功能都放在服務端,那個SWF文件只是個界面而已。這是個完美的保護措施,但是缺陷是這件產(chǎn)生一個轉為游戲工作的CGI,而不是Flash。我們正在討論關于SWF的保護問題,這個解決方案是不妥當?shù),因為SWF文件自身得不到保護。
(完)
水平有限,敬請批評指正。 mailto:xmanceo@yahoo.com.cn
出處:CSDN
責任編輯:qhwa
上一頁 如何防止SWF文件被反編譯 [1] 下一頁
◎進入論壇Flash專欄版塊參加討論
|