某Android手游的lua源碼逆向分析與還原



近日分析某一款Android上面的手游,反編譯后再起asset目錄下可以看到加密過的腳本,lib目錄下發現lua的so 初步懷疑其使用lua腳本實現的

  • 解密函數定位
  • 動態跟蹤解密函數流程
  • 靜態分析解密函數流程
  • 編寫程序進行解密

lib目錄下so的名稱

1. 解密函數定位。

IDA加載SO,導出函數搜索關鍵字loadbuffer,定位到lua腳本加載的地方。Android so中使用lua腳本需使用loadbuffer函數進行加載該腳本。

2. 動態跟蹤解密函數流程。

啟動游戲后,動態調試該so,loadbuffer上一步的操作為其解密函數跟蹤分析。(最終跳轉的函數為bt_decrypt)

1.getFileData函數

2.doGetFileData

3.bt_decrypt函數

3. 靜態分析解密函數流程。

1.分析bt_decrypt函數,有明顯的頭部判斷操作。

分析其操作為讀取第八位后即1,左移兩位1<<2 == 4 在加40的位移 剛好4c對應的操作及函數_Z13decrypt_basicPhi

2.分析decrypt_basic函數,有過濾掉前32位無效操作以及讀取第九位作為偏移量進行函數操作。

偏移的函數列表

3.分析各個函數操作,以encrypt_hash_odd為例。(主要對HASH_BITS進行操作,步驟2中的解密最后需要改哈希表進行異或解密)

4.原理總結:讀取加密腳本的第九位判斷,使用對應偏移函數對哈希表前32字節進行操作,最后將修改的位數填充到哈希表128位。完成對哈希表的操作,使用該哈希表進行異或解密。

4.編寫解密程序解密腳本文件夾驗證

解密后結果可以直接看到lua源碼


免責聲明!

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



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