前段时间在 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天没进展了。。。


唉,心那个酸呐!

然后又要出书!

清华大学出版社签约的,怕误人子弟,所以非常用心。写得非常专注的。到时候希望大家多多宣传下,谢谢大家观


博!

转载于:https://www.cnblogs.com/llguanli/p/6978220.html

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

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

    前段时间在 Android play 上看到一个很牛逼的 3D 动态天气预报,效果真的很炫,二话不说动手 dex2jar.bat/apktool 发现这并没 有什么卵用,在核心的地方看见 native ...

  2. 1ke android逆向助手_android: 使用android逆向助手反编译APK

    第一步:下载逆向助手:(链接: https://pan.baidu.com/s/15jtoFDg9LWV80HREeyx5HA 提取码: k527 ) 第二步:将apk文件拷贝到逆向助手的apktoo ...

  3. Android 反编译Apk提取XML文件

    Apktool https://ibotpeaches.github.io/Apktool/install/ 下载地址:Apktool https://bitbucket.org/iBotPeache ...

  4. android apk xml文件,Android 反编译Apk提取XML文件

    Apktool 下载地址:Apktool 打开cmd终端:java -jar apktool_2.3.3.jar  d xxx.apk 示例: D:\TOOL\Android反编译工具[全]\2018 ...

  5. [Android]反编译apk + eclipse中调试smali

    从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...

  6. Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK

    文章目录 1. 签名的作用 2. Android Studio 如何打包签名 3. 反编译 APK 3.1 获取图片资源 3.2 获取 .XML 资源 3.3 获取代码资源 1. 签名的作用 Andr ...

  7. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门

    首先下载反编译工具包 下载地址 链接:  https://zly520.lanzoui.com/ibtuxhf7rab 一.反编译工具介绍 首先 如果你想改动图片音频之类的,见末尾! 1.apktoo ...

  8. Android反编译apk修改版本号重新打包签名详细教程(超详细)

    文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...

  9. 使用Android Killer反编译apk成功,回编译打包失败问题记录

    问题:直接使用Android Killer对apk进行反编译,反编译成功,未做任何修改,直接点击"编译",编译报错,提示相关代码未找到,无法进行下一步apk签名操作. 排查: 检查 ...

最新文章

  1. 【组队学习】【25期】Datawhale组队学习内容介绍
  2. 快手上市,蚂蚁酸了!不含主管人均收益1500万,蚂蚁不能比
  3. 去停用词 java代码_如何在java中去除中文文本的停用词
  4. android studio设置生成的release版本apk的名称
  5. Share Point 开发系列之一:开发方式的选择
  6. TFS创建团队项目(三)
  7. 简述python执行原理_Python程序的执行原理(1)(2)
  8. Golang实践录:一个数据库迁移的代码记录
  9. 调车遇到的问题及解决办法
  10. Master主动向Slave发送binlog?还是Slave主动向Master要binlog?
  11. won10 mysql 5.7.22主从同步
  12. 显示器驱动程序已停止响应 并且已成功恢复
  13. 多线程之生产者与消费者问题
  14. 《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
  15. Arnold材质节点篇-随机颜色抖动color_jitter、三平面triplanar、ambient_occlusion环境光遮蔽、curvature曲率
  16. 解决Flash Helper Service老是弹出流氓广告
  17. 苹果开发者暂停支付收入
  18. js下载Word文档
  19. 阿里云SLB负载均衡理论与操作
  20. 简述 Symbol 类型用途

热门文章

  1. python将OCR识别的表格还原到excel中
  2. BIM建模|什么样的计算机可以支撑BIM应用?
  3. js如何动态添加表格行
  4. Asterisk Dial拨号命令中文详解
  5. iphone android 功能清单,让iPhone羡慕:Android N最赞10大新功能
  6. JS 数组合并、去重
  7. W6 BinarySearch
  8. 【Jmeter学习01】Jmeter的介绍与下载安装
  9. 常见视频原始数据格式分析 — YUV
  10. Android布局虚拟机显示与手机实际显示不一致