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天没进展了。。。

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

博!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jspping/article/details/50396326
文章标签: Android Cocos2dx引擎 p
个人分类: Android 编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭