码迷,mamicode.com
首页 > 其他好文 > 详细

利用ZjDroid对 <捕鱼达人3> 脱壳及破解过程

时间:2015-07-16 20:12:34      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

<捕鱼达人3> 刚出来不久,就被鬼哥Dump出来dex,随之破解也就轻而易举。一开始我用ZjDroid神器试验过,但是没Dump成功一直耿耿于怀,终于有一天逆袭 不仅提取出来了smali文件,继而修复 更是在破解的时候 另辟蹊径,不弹支付界面亦可破解了还支持离线模式。就记录一下。
程序是从移动MM商城下载的。

一、脱壳。
这个壳的关键词是 chaosvmp ,据说是看雪一位版主所在的公司开发的。在手机上安装好程序并运行,依据教程,脱壳的步骤是:
1、打开命令行 输入查看 LogCat  :
adb shell logcat -s zjdroid-shell-org.cocos2d.fishingjoy3
如下图所示:

技术分享
记下hook的pid=13108
2、再打开一个命令行 用来向手机发送执行命令。首先要在 adb shell 获取APK当前加载DEX文件的信息 输入命令:
am broadcast -a com.zjdroid.invoke --ei target 13108 --es cmd ‘{"action":"dump_dexinfo"}‘

技术分享
如图,会出现两个路径,第一次Dump可能不知道应该用哪一个,我用的是apk后缀的。我的看法是如果路径中有 **.classes.dex 路径,则优先选择;否则可以试试apk后缀的路径。那我们开始dump dex:
am broadcast -a com.zjdroid.invoke --ei target 13108 --es cmd ‘{"action":"backsmali","dexpath":"/data/app/org.cocos2d.fishingjoy3-1.apk"}‘

技术分享
运行几分钟,提示无错误dump dex完成。

技术分享
到指定的文件夹查看dex文件,大小却为0字节是不是就说明我们dump失败了呢?其实 /file/smali 是可以提出来完全可以用的。

 

二、修复。
上面已经提取出来smali文件了 用IDE反编译原程序,将smali文件替换为dump出来的 看能否编译成功。果然出错如下图,

技术分享
试着修复一下,找到报错的地方:

技术分享
将这两行删除,同样修复接下来的报错提示。然后就能编译成功了。
安装试试能不能正常打开,果然秒退o(╯□╰)o 
咦 这到底是为什么尼?我们是把壳脱了 猜想,是不是程序运行时 仍然调用了与壳有关的代码 导致了闪退?终于不负有心人在AndroidManifest.xml文件中 看到了:

技术分享
果断将 Application 的 name 属性删除。然后完美修复完成。

 

三、破解。
按照以前的陈旧思路 移动MM商城的短信支付几乎可以说是秒破,但是今天换一种思路 探索更完美的破解手段——不让其弹支付界面直接购买成功。(还是天哥的教程给了我动力 膜拜..)怎么个思路呢?还是得先分析关键.Method onBillingFinish,定位到短信发送成功调用的代码:

技术分享

(其实,这段代码出现支付界面只不过显示“发送成功”),结合下面代码很容易识别,交易成功与否的关键词为:“didCompleteTransaction”“didCancelledTransaction”
那就直接搜索关键词呗 找到;类org/cocos2dx/IAP/IAPWrapper,里面的方法有:

技术分享

根据方法名猜测 addpayment ,有添加支付弹窗的嫌疑,那我们就试着 将.method didCompleteTransaction 里的代码全部复制到.method addPayment。安装试验。结果却出现了:

技术分享

一定是方法 didCompleteTransaction 另有判断,查看代码 只有一个判断,修改即可。

技术分享
然后保存,测试成功。

技术分享

利用ZjDroid对 <捕鱼达人3> 脱壳及破解过程

标签:

原文地址:http://my.oschina.net/1590538xiaokai/blog/479401

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!