1. 程式人生 > >Android Cocos2dx引擎 prv.ccz/plist/so等優化快取檔案,手把手ida教你逆向工程反編譯apk庫等檔案

Android Cocos2dx引擎 prv.ccz/plist/so等優化快取檔案,手把手ida教你逆向工程反編譯apk庫等檔案

前段時間在 Android play 上看到一個很牛逼的 3D 動態天氣預報,效果真的很炫,二話不說動手 dex2jar.bat/apktool 發現這並沒

有什麼卵用,在核心的地方看見 native 欄位果斷放棄了治療,立馬轉向 so 的逆向工程,發現了cocos2dx so 引擎,搜噶,我就說

嘛這麼炫酷的效果, Android 原始碼是做不了的,即使達到了這種程度,估計效能也特別不好,因為那個動態效果是不會迴圈播放

的,也就是不會重複,是自己繪製的根據資原始檔,在反編譯的 assets 下發現如下一大堆檔案


排除 png 載入炫酷 3D 動態效果的可能,那答案就很明顯了,就是這些 prv.ccz/plist 檔案了,這兩個檔案是 cocos2dx 用來載入

渲染效果的資原始檔,plist 相當於 key , 而 prv.ccz 裡面則對應 value 即一組資源組圖,這時候我就百度了開啟這個檔案的方

式,發現TexturePacker可以開啟此類檔案,下載之後,點選 pvr viewer 按鈕,彈出如下提示


頓時傻眼了。。。,然後網上查詢資料,在根據 so 的被調函式得知,cocos2dx 引擎在渲染上述檔案的時候需要先驗證這個 key

ok,我就比較爽了,因為我平時沒事就喜歡逛論壇啊,搞破解啊什麼的,這些都難不倒我,開幹吧!拿起我的測試親兒子平板,

開始了我的逆向,首先教大家一個方法 adb 埠轉發,ida android_server 同步監聽,很迷糊嗎?好吧說詳細一點

筆者開發工具:

ida 6.6 破解版本 

ADT 22.3

逆向真機 Nexus 7-2 

下載完 ida 之後,到如下圖片的路徑找該檔案


插上真機的USB,將此檔案 push 到  /data/local/tmp/ 下,然後啟動它,push 需要 root 之後,如出現 只讀許可權,執行 

remount,還是不行執行 su命令 ,在 mount 

#adb remount       // 如 Read-only file system

#adb shell

#su                         // 需要root許可權

#mount -o rw , remount -t yaffs2 /data 需要在 ./ 下

得到許可權之後,將 android_server push 到 /data/local/tmp 下

並且啟動

#./android_server // 直接回車

 IDA Android 32-bit remote debug server(ST) v1.17. Hex-Rays (c) 2004-2014
Listening on port #23946...
=========================================================
[1] Accepting connection from 127.0.0.1...
[1] Incompatible IDA version
[1] Closing connection from 127.0.0.1...
=========================================================
[2] Accepting connection from 127.0.0.1...
[2] Incompatible IDA version
[2] Closing connection from 127.0.0.1...

出現上述提示,說明真機部署的工作已經完成,剩下的就是開啟 attach 除錯了

接下來開啟你的 ida ,open 你要除錯的 so 原始檔,點選debugger->attach->remote Armlinux/andoid debugger,設定hostname為localhost,port為23946,點選OK;然後選擇要除錯的APP並點選OK

如果沒有出現斷點除錯,請檢視要逆向的工程程序是否已經進入 debug 模式,否者手動如下命令

adb shell am start -D -n 包名/包名.入口Activity // 回車

隨即開啟另一個 dos 鍵入如下命令,將 android 裝置監聽埠轉發到本地 ida


在進入ida F5 , 隨即進入除錯模式 ctrl+F 下一單元 ,F9Continue  Process , Ctrl + F5 展示全部 ,進入除錯模式後,隨機 ctrl+5 so 庫檔案被載入 log 如下


繼續往下走,驗證渲染檔案 128 為密碼函式,就是我要偷的東西,資訊如下


去掉 十六進位制識別符號將其組合為:

 A518F2DC139BFEF5F8DC9F635CDB8A9A
隨即將其輸入到TexturePacker軟體裡,一切正如我所料,完美破解
prv.ccz 檔案的逆向就到此全部完成,剩下的就是逆向 so 重要函式呼叫,整個過程花了5天時間,不過破解了2個線上市場上的apk,利用的是下班 的散碎時間,關於核心部分的逆向我就不說了,因為筆者有私心,想繼續在其基礎上編寫程式碼,完善一下變成自己的,哈哈,有點賤的感覺。。。 順便告訴一下,windows 下的軟體照樣可以逆向,只是反彙編相當麻煩,工程量很大!有興趣的可以 查閱 ida 相關的資料 下一個目標是逆向一個離線語音合成的引擎,這個還是相當有難度的。。。因為我已經4天沒進展了。。。 唉,心那個酸吶!然後又要出書!清華大學出版社簽約的,怕誤人子弟,所以很用心,寫得很專注的,到時候希望大家多多宣傳下,謝謝大家觀 博!