前段时间在 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。弹出例如以下提示

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

顿时傻眼了。

。。

。然后网上查找资料。在依据 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 例如以下

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

继续往下走,验证渲染文件 128 为password函数,就是我要偷的东西,信息例如以下





去掉 十六进制标识符将其组合为:

 A518F2DC139BFEF5F8DC9F635CDB8A9A

随即将其输入到TexturePacker软件里,一切正如我所料,完美破解

prv.ccz 文件的逆向就到此所有完毕。剩下的就是逆向 so 重要函数调用,整个过程花了5天时间。只是破解了2个在线市场上的apk,利用的是下班


的散碎时间。关于核心部分的逆向我就不说了,由于笔者有私心,想继续在其基础上编写代码。完好一下变成自己的。哈哈,有点贱的感觉。。。



顺便告诉一下。windows 下的软件照样能够逆向,仅仅是反汇编相当麻烦,project量非常大!

有兴趣的能够 查阅 ida 相关的资料



下一个目标是逆向一个离线语音合成的引擎,这个还是相当有难度的。。

。由于我已经4天没进展了。。。



唉,心那个酸呐!

然后又要出书!

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



博!

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

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

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

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

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

  3. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  4. Android 反编译apk 详解

    测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取)  下载          dex2jar(源码文件获取) 下载        jd-gui  (源码查看)  ...

  5. Xamarin android如何反编译apk文件

    Xamarin android 如何反编译 apk文件 这里推荐一款XamarinAndroid开发的小游戏,撸棍英雄,游戏很简单,的确的是有点大.等一下我们来翻翻译这个Xamarin Android ...

  6. Android基础新手教程——1.10 反编译APK获代替码&资源

    Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样 ...

  7. Android开发学习之反编译APK文件

    反编译的目的在于学习一些优秀的Android应用程序代码. 在进行反编译之前,需要准备好下面的软件工具(这些文件都放在同一文件下): 这些工具的下载地址:http://down.51cto.com/d ...

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

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

  9. Android apk逆向:反编译,回编译,签名,打包。

    Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...

随机推荐

  1. 【NOIP 2011】 Mayan游戏

    [题目链接] https://www.luogu.org/problemnew/show/P1312 [算法] 深度优先搜索 [代码] #include<bits/stdc++.h> us ...

  2. python 3.7 replace函数的坑

    使用replace时必须用 str=str.replace(old,new) 如果用 str.replace(old,new)会不起作用. 注意:若str中没有old变量,也不会报错 应用: 练习题 ...

  3. tp框架---表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册“自动验证”一章. 一.静态验证 ( ...

  4. UI常用网站

    网站大全 国外的花瓣--Pinterest • The world’s catalog of ideas 字体海洋--求字体网提供中文和英文字体库下载.识别与预览服务,找字体的好帮手 原创设计UI-- ...

  5. jQueryDOM操作模块

    DOM操作模块 1.复习选择器模块(选择器模块结束) 目的:学而时习之 复习和总结选择器模块 2.DOM的基本操作方法 目标:回顾DOM操作的基本方法 3.1 DOM操作 -创建节点 练习 1:创建1 ...

  6. 查询 MySQL 库/表相关信息

    SHOW DATABASES //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name] //列出数据库数据表. SHOW CREATE TABLES tbl_ ...

  7. CV与IP:基础,经典以及最近发展

    原文链接:http://blog.csdn.net/dcraw/article/details/7617891 原文编写层层递进,逻辑清晰: 不过看这篇转载可以少点击鼠标:http://blog.cs ...

  8. vue 项目初始化、mock数据以及安装less

    vue 创建一个项目 1.首先建立一个空文件夹,然后将这个文件夹要放到码云或者其他代码管理平台. 例如码云: 在码云上建立一个项目,然后在控制台进入这文件夹执行 git clone 地址是码云上创建的 ...

  9. 设置Pycharm在创建py文件时自动添加文件头注释(类似于钩子特性)

    在每次新建一个py文件的时候 1 如何自动添加 #!/usr/bin/env python2 自动添加       #-*- coding: utf-8 -*- 操作方法: File -> se ...

  10. 爬虫工具--Beautifusoup

    import requests from bs4 import BeautifulSoup s=requests.Session() r=s.get('https://www.tumblr.com/l ...