Flash 加密和破解

關於Flash(swf),咱們須要明確一點:算法

***Flash字節碼的意義都是公開的 因此若是cracker真的有足夠的耐心他最終仍是能夠破解掉你的Flash。咱們能作的只是儘可能提升Flash被破解的門檻讓cracker破解它須要消耗的時間大於本身更新版本的間隔就行了。工具

 

通常而言,對於遊戲,無非是爲了防止cracker修改遊戲數據,製做外掛,固然也有人爲了破解遊戲,提取素材,提取音頻,提取音樂等等。加密

如今Flash頁遊已經走下坡了,沒多少人關注了,並且這種加密方案也比較成熟了。可是,正由於Flash小遊戲不少,這裏邊大量的素材資源,也許就是很是不錯的資料來源。對象

 

先簡單回顧一下怎麼作遊戲的加密,防止破解或外掛:blog

 一、關鍵數據加密

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

二、修改數據包

適用防範對象
  使用Fiddler等各類工具篡改回包或使用假數據發包的初中級cracker
原理
  加密數據包並在數據包裏面加入防僞信息
具體作法
  對數據包內容進行簡單的AES或XOR加密並在其中加入相似TCP/IP協議的Sequence ID先後臺共同對數據包進行校驗。

三、Flash初級加密

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

四、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來反編譯。
相關文章
相關標籤/搜索