zoukankan      html  css  js  c++  java
  • 利用ZjDroid对 <捕鱼达人3> 脱壳及破解过程-转

    http://blog.sina.com.cn/zihao2015

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

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

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    记下hook的pid=13108
    2、再打开一个命令行 用来向手机发送执行命令。首先要在 adb shell 获取APK当前加载DEX文件的信息 输入命令:
    am broadcast -a com.zjdroid.invoke --ei target 13108 --es cmd '{"action":"dump_dexinfo"}'

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    如图,会出现两个路径,第一次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"}'

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    运行几分钟,提示无错误dump dex完成。

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    到指定的文件夹查看dex文件,大小却为0字节是不是就说明我们dump失败了呢?其实 /file/smali 是可以提出来完全可以用的。

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

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    试着修复一下,找到报错的地方:

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

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    果断将 Application 的 name 属性删除。然后完美修复完成。

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

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

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

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

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

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

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

    利用ZjDroid对 <wbr><捕鱼达人3> <wbr>脱壳及破解过程
    然后保存,测试成功。

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

  • 相关阅读:
    一款你不容错过的Laravel后台管理扩展包 —— Voyager
    关于后台动态模板添加内容的总结 Builder使用
    Python 解决 :NameError: name 'reload' is not defined 问题
    thinkcmf,thinksns,thinkphp,onethink三者是什么关系?
    PHP中用下划线开头的变量含义
    NetBeans 时事通讯(刊号 # 77 Oct 21, 2009)
    NetBeans 时事通讯(刊号 # 78 Oct 27, 2009)
    最受欢迎的中国 50 技术博客评选结果
    祝父亲生日快乐
    最受欢迎的中国 50 技术博客评选结果
  • 原文地址:https://www.cnblogs.com/xunbu7/p/3926824.html
Copyright © 2011-2022 走看看