Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

一身转战三千里,一剑曾当百万师。这篇文章主要讲述Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件相关的知识,希望能为你提供帮助。
前段时间在 Android play 上看到一个非常牛逼的 3D 动态天气预报,效果真的非常炫。二话不说动手 dex2jar.bat/apktool 发现这并没
有什么卵用,在核心的地方看见  native 字段果断放弃了治疗,立刻转向 so 的逆向project。发现了cocos2dx so 引擎,搜噶。我就说
嘛这么炫酷的效果, Android 源代码是做不了的。即使达到了这样的程度,预计性能也特别不好。由于那个动态效果是不会循环播放
的,也就是不会反复。是自己绘制的依据资源文件,在反编译的 assets 下发现例如以下一大堆文件


Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片


排除 png 载入炫酷 3D 动态效果的可能。那答案就非常明显了,就是这些 prv.ccz/plist 文件了,这两个文件是 cocos2dx 用来载入
渲染效果的资源文件,plist 相当于 key , 而 prv.ccz 里面则相应 value 即一组资源组图。这时候我就百度了打开这个文件的方
式,发现TexturePacker能够打开此类文件。下载之后,点击 pvr viewer button。弹出例如以下提示
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片


顿时傻眼了。
。。
。然后网上查找资料。在依据 so 的被调函数得知。cocos2dx 引擎在渲染上述文件的时候须要先验证这个 key
ok,我就比較爽了。由于我平时没事就喜欢逛论坛啊。搞破解啊什么的,这些都难不倒我,开干吧!
拿起我的測试亲儿子平板,
開始了我的逆向,首先教大家一个方法 adb port转发。ida android_server 同步监听。非常迷糊吗?好吧说具体一点
笔者开发工具:
ida 6.6 破解版本号 
ADT 22.3
逆向真机 Nexus 7-2 
下载完 ida 之后,到例如以下图片的路径找该文件
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片




插上真机的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
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片


在进入ida F5 , 随即进入调试模式 ctrl+F 下一单元 。F9Continue  Process , Ctrl + F5 展示所有 ,进入调试模式后,随机 ctrl+5 so 库文件被载入 log 例如以下
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片


继续往下走,验证渲染文件 128 为password函数,就是我要偷的东西,信息例如以下
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片




去掉 十六进制标识符将其组合为:
  A518F2DC139BFEF5F8DC9F635CDB8A9A
随即将其输入到TexturePacker软件里,一切正如我所料,完美破解
Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件

文章图片

prv.ccz 文件的逆向就到此所有完毕。剩下的就是逆向 so 重要函数调用,整个过程花了5天时间。只是破解了2个在线市场上的apk,利用的是下班
的散碎时间。关于核心部分的逆向我就不说了,由于笔者有私心,想继续在其基础上编写代码。完好一下变成自己的。哈哈,有点贱的感觉。。。


顺便告诉一下。windows 下的软件照样能够逆向,仅仅是反汇编相当麻烦,project量非常大!
有兴趣的能够 查阅 ida 相关的资料

下一个目标是逆向一个离线语音合成的引擎,这个还是相当有难度的。。【Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件】
。由于我已经4天没进展了。。。


唉,心那个酸呐!
然后又要出书!
清华大学出版社签约的,怕误人子弟,所以非常用心。写得非常专注的。到时候希望大家多多宣传下,谢谢大家观

博!



























    推荐阅读