Flash 加密和破解


關於Flash(swf),我們需要明確一點:

***Flash字節碼的意義都是公開的 所以如果cracker真的有足夠的耐心他最終還是可以破解掉你的Flash。我們能做的只是盡量提高Flash被破解的門檻讓cracker破解它需要消耗的時間大於自己更新版本的間隔就好了。

 

一般而言,對於游戲,無非是為了防止cracker修改游戲數據,制作外掛,當然也有人為了破解游戲,提取素材,提取音頻,提取音樂等等。

現在Flash頁游已經走下坡了,沒多少人關注了,而且這種加密方案也比較成熟了。但是,正因為Flash小游戲很多,這里邊大量的素材資源,也許就是非常不錯的資料來源。

 

先簡單回顧一下怎么做游戲的加密,防止破解或外掛:

 1、關鍵數據加密

適用防范對象
  使用內存修改工具妄圖直接修改關鍵數據的初級cracker
原理
  關鍵數據不使用明文保存
具體做法
  對關鍵數據的存取使用AES或XOR等算法進行處理保證關鍵數據在內存中不以明文保存(做一個類用於存取,每次把數據取出后用臨時變量做加密解密)

2、修改數據包

適用防范對象
  使用Fiddler等各種工具篡改回包或使用假數據發包的初中級cracker
原理
  加密數據包並在數據包里面加入防偽信息
具體做法
  對數據包內容進行簡單的AES或XOR加密並在其中加入類似TCP/IP協議的Sequence ID前后台共同對數據包進行校驗。

3、Flash初級加密

適用防范對象
  會用Flash破解工具破解之后嘗試對Flash源碼進行修改的中高級cracker
原理
  提高使用工具破解Flash之后讀懂源碼並進行修改的門檻
具體做法
  直接使用工具如DoSWF等對Flash的關鍵代碼進行加密和混淆

4、Flash高級加密
適用防范對象
  沒有足夠的時間和耐心的高級cracker
原理
  使用各種惡心的技巧對自己的Flash關鍵內容進行保護
具體做法
  (1)對關鍵代碼進行混淆 ——提高破解后讀懂代碼的門檻
  (2)將保有關鍵邏輯的main.swf以二進制形式嵌入到工程里在外層使用loader的loadBytes()方法進行讀取並實例化 ——提高直接被抓包抓到關鍵SWF的門檻需要cracker解析文件二進制內容才能拿出來關鍵的swf
  (3)加載main.swf之前檢測關鍵類是否已經被定義過並且將main.swf加載到與loader.swf不同的ApplicationDomain ——防止cracker用preloader等方法事先定義關鍵類用來頂替main.swf中的同名關鍵類提高類替換的門檻(父程序域覆蓋子程序域)
  (4)關於第2點,還可以把二進制做得更絕一些,例如把二進制加密了,然后再在程序里邊解密,而解密程序, 又可以用Pixelbender來做(Pixelbender的破解又難了很多)。當然,最重要的是,必須先把loader部分混淆,讓反編譯軟件無法直接得到可運行代碼,這樣cracker就失去耐心了。
 
 
好了,說完加密,那么現在這么多flash小游戲,破解一下,拿點素材來使用也是不錯的選擇。
反編譯提取素材,當然要依賴於Sothink等反編譯軟件了,但是很多游戲的素材和主swf都以二進制形式嵌入的,這樣對於sothink swf decompiler來說是無能為力的。反編譯出來只有這樣的空類:
這時候需要自己根據swf格式說明,寫個程序提取出對應的二進制數據,再用sothink來反編譯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM