Android Cocos2dx引擎 prv.ccz/plist/so等優化緩存文件,手把手ida教你逆向project反編譯apk庫等文件
前段時間在 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庫等文件