1. 程式人生 > >Android Cocos2dx引擎 prv.ccz/plist/so等優化緩存文件,手把手ida教你逆向project反編譯apk庫等文件

Android Cocos2dx引擎 prv.ccz/plist/so等優化緩存文件,手把手ida教你逆向project反編譯apk庫等文件

反編譯 packer ng- ace yaffs2 ces spa 即將 放棄

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

有什麽卵用,在核心的地方看見 native 字段果斷放棄了治療,立刻轉向 so 的逆向project。發現了cocos2dx so 引擎,搜噶。我就說

嘛這麽炫酷的效果, Android 源代碼是做不了的。即使達到了這樣的程度,預計性能也特別不好。由於那個動態效果是不會循環播放

的,也就是不會反復。是自己繪制的依據資源文件,在反編譯的 assets 下發現例如以下一大堆文件


技術分享

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

渲染效果的資源文件,plist 相當於 key , 而 prv.ccz 裏面則相應 value 即一組資源組圖。這時候我就百度了打開這個文件的方

式,發現TexturePacker能夠打開此類文件。下載之後,點擊 pvr viewer button。彈出例如以下提示

技術分享

頓時傻眼了。

。。

。然後網上查找資料。在依據 so 的被調函數得知。cocos2dx 引擎在渲染上述文件的時候須要先驗證這個 key

ok,我就比較爽了。由於我平時沒事就喜歡逛論壇啊。搞破解啊什麽的,這些都難不倒我,開幹吧!

拿起我的測試親兒子平板,

開始了我的逆向,首先教大家一個方法 adb port轉發。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

假設沒有出現斷點調試,請查看要逆向的project進程是否已經進入 debug 模式。否者手動例如以下命令

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

隨即開啟還有一個 dos 鍵入例如以下命令,將 android 設備監聽port轉發到本地 ida

技術分享

在進入ida F5 , 隨即進入調試模式 ctrl+F 下一單元 。F9Continue Process , Ctrl + F5 展示所有 ,進入調試模式後,隨機 ctrl+5 so 庫文件被載入 log 例如以下

技術分享

繼續往下走,驗證渲染文件 128 為password函數,就是我要偷的東西,信息例如以下

技術分享


去掉 十六進制標識符將其組合為:

A518F2DC139BFEF5F8DC9F635CDB8A9A
隨即將其輸入到TexturePacker軟件裏,一切正如我所料,完美破解 技術分享
prv.ccz 文件的逆向就到此所有完畢。剩下的就是逆向 so 重要函數調用,整個過程花了5天時間。只是破解了2個在線市場上的apk,利用的是下班
的散碎時間。關於核心部分的逆向我就不說了,由於筆者有私心,想繼續在其基礎上編寫代碼。完好一下變成自己的。哈哈,有點賤的感覺。。。


順便告訴一下。windows 下的軟件照樣能夠逆向,僅僅是反匯編相當麻煩,project量非常大!

有興趣的能夠 查閱 ida 相關的資料


下一個目標是逆向一個離線語音合成的引擎,這個還是相當有難度的。。

。由於我已經4天沒進展了。。。


唉,心那個酸吶!

然後又要出書!

清華大學出版社簽約的,怕誤人子弟,所以非常用心。寫得非常專註的。到時候希望大家多多宣傳下,謝謝大家觀


博!

Android Cocos2dx引擎 prv.ccz/plist/so等優化緩存文件,手把手ida教你逆向project反編譯apk庫等文件