Cocos2d-x的lua官方加密的解密方法

0x01 加密方式分析
Cocos2d-x對於lua腳本加密提供了一種輕量級解決方案,加密算法是xxtea,下面是這個打包腳本cocos2d.py加密參數的說明
 
主要就是兩個部分,sign和key,sign是加密標記,用於判斷腳本是否加密,key是xxtea解密時候的祕鑰,下面是Cocos2d-x部分源碼
這裏設置了sign和key
 
這裏就是通過對比文件開頭的字符串是否爲所設置的sign判斷是否加密,如果加密的話就解密,解密後才加載腳本
 




0x02 尋找sign和key
將apk解壓之後就找到src這個目錄,這裏放着lua腳本
 
這裏的lua腳本是加密的,用記事本打開,可以看到開頭的字符串"CreatByDartou",這就是上面所說的sign ,知道sign之後下面就要找key
 
找key很簡單,用IDA載入libcocos2dlua.so這個庫,打開string窗口,直接搜索sign,key就在附近,"thirteenPokerCOCOS"就是key,知道了這些就可以解密了。
 


解密算法和加密算法可以在https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/tree/v3/xxtea找到

0x03 編寫解密程序
解密思路很簡單,無非就是讀取文件,調用xxtea_decrypt來解密,然後寫入文件,寫好代碼編譯運行即可
 
解密成功
 
爲了實現批量解密,可以編寫個腳本去實現(爲啥不直接在解密程序中實現批量?本人比較懶,腳本代碼少些

[Shell] 純文本查看 複製代碼

?

   


解密腳本可以批量的解密
 

0x04 更安全的加密方案
1.應該使用luajit去編譯自己的腳本,就算攻擊者解密出來也無法獲得源碼
2.不應該採用官方的加密方案,應該自己實現加密解密算法。
3.隱藏自己的加密祕鑰,不應該過分明顯。
4.保護好自己的so庫,加殼或者做混淆。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章