吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14581|回复: 27
收起左侧

[Android 原创] 某款Android单机游戏破解过程记录 (适合新手阅读)

  [复制链接]
liye1320 发表于 2015-7-29 12:42
本帖最后由 liye1320 于 2015-8-13 13:23 编辑

        本帖适合新手阅读。
        使用工具:ApkIDE(改之理),jd-gui等等
        原始apk:http://pan.baidu.com/s/1qWKbXIs
        由于这个apk会根据不同的环境而有不同的支付方式,下面仅仅只详细说明,有移动SIM卡的手机,如果你使用虚拟机或者没有卡的手机,那么第一张图的界面都会不一样,但是主要流程还是一样的。
        下面流程对于聪明的人说,完全可以凭经验和才智直接定位,如果你是这样的人,请忽略。

破解记录如下:
1.从界面着手
      首先点击游戏需要付费的地方,出现下图:
       11.jpg
      我们看到“手机短信激活游戏”(其他字符串也有相同效果),那么现在用ApkIDE打开游戏原始apk,搜索“手机短信激活游戏”得到
      <string name="tip_1">手机短信激活游戏!</string>
      我们接着搜索"tip_1",得到:
       22.jpg
      从第一条中,我们知道这个界面对应paydialog.xml,那么继续搜索paydialog.xml,无果,搜索paydialog,结果太多了,我们试试全字匹配搜索,结果如下
       33.jpg
      从图中分析,现在我们大概能确定切入点在这里com.zeptolab.ctr.ads.chinese.gamebase\smali\org\ifree\PayManager\PayView\IfreePayDialog.smali

2.利用jd-gui查看对应的代码分析
       44.jpg
      这里可以看到根据OperatorType不同,会有两种不同的支付界面,这个后面再说。我们此次流程对应的是ClickEvent(),关键代码如下:
       55.jpg
      这里就很容易明白了,这三个函数对应的就是“失败”“成功”“取消”的响应函数。

3.修改代码,进行破解
      我们需要做的事,就是让“失败”或者“取消”,能够响应“成功”的函数,最简单的做法就是:替换函数名!
      我们在ApkIDE中搜索onBillingSuccess,可以看到函数定义在smali\org\ifree\PayManager\PayView\IfreePayDialog$5$1.smali中,其他调用的地方可以忽略
      点进去看,依次可以找到onBillingSuccess  onBillingFail  onUserOperCancel。
      一般支付失败的可能性较小,为了方便,我们把onBillingSuccess  和 onUserOperCancel名字对换,当用户取消的时候,执行成功的响应函数。
      保存代码,编译。
      安装后运行apk,到支付的那个界面,点击确认支付20元激活游戏,如下图:
       aa.jpg bb.jpg cc.jpg
      按照上图的红圈操作,先点击关闭,后弹出上图2,再点击不购买,就支付成功了!
      到这里,这一种情况的破解就完成了。


4.破解流程中其他的一些路径说明
      1)paydialog和otherpay两种支付界面。
            对应的点击函数是ClickEvent()和Other_ClickEvent()
            我们上面的流程是paydialog界面,因为我是真机测试的。如果没有sim卡或者使用虚拟机,就会使用otherpay,利用支付宝等支付。代码如下:
[Java] 纯文本查看 复制代码
  protected void onCreate(Bundle paramBundle)
  {
    requestWindowFeature(1);
    getWindow().setBackgroundDrawable(new BitmapDrawable());
    this.context = this;
    super.onCreate(paramBundle);
    alp_infoicon = createDrawable("alp_infoicon.png");
    alp_info = createDrawable("alp_info.png");
    this.OperatorType = GetPhoneCardType.getIntance(this).getPhoneOperator();
    if ((this.OperatorType != 5) && (this.OperatorType != -1))
      setContentView(getResId("paydialog", "layout"));
    do
      while (true)
      {
        StringMsg.setOperatorID(this.OperatorType);
        if ((this.OperatorType == 5) || (this.OperatorType == -1))
          break;
        init();
        return;
        if (this.OperatorType != -1)
          continue;
        setContentView(getResId("otherpay", "layout"));
      }
    while (this.OperatorType != -1);
    oth_init();
  }
[Java] 纯文本查看 复制代码
public int getPhoneOperator()
  {
    int i = -1;
    this.tm = ((TelephonyManager)this.context.getSystemService("phone"));
    String str = this.tm.getSimOperator();
    boolean bool = str.equals("");
    System.out.println(bool + "=====>" + str);
    StringMsg.setIsNoSim(bool);
    if (!bool);
    switch (Integer.parseInt(str))
    {
    case 46004:
    case 46005:
    case 46006:
    default:
      i = 5;
      return i;
    case 46000:
    case 46002:
    case 46007:
      return 1;
    case 46003:
      return 2;
    case 46001:
    }
    return 6;
  }
}

这里为了统一,可以让所有返回值都为1,让apk把当前环境当作有移动SIM卡的环境。没有SIM卡的手机中,如果这样做了的话,按照上述方法破解后,会出现好友代付的界面,有兴趣的朋友可以自己继续破解。

点评

不错,学到了。  发表于 2017-5-2 21:45

免费评分

参与人数 9热心值 +9 收起 理由
baoshan685 + 1 鼓励转贴优秀软件安全工具和文档!
tao849476012 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
qtfreet00 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
QZ2015 + 1 我很赞同!
tail88 + 1 请楼主出些 去更新(升级) 的教程。这样的太.
无趣水瓶 + 1 感谢分享教程 不过这应该发在[移动安全区]
tianchao110 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
tony2526 + 1 我很赞同!
楼兰王 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| liye1320 发表于 2015-7-29 17:15
Ham_888 发表于 2015-7-29 16:40
2.利用jd-gui查看对应的代码分析     这一步没空懂  楼楼能详细点吗? 怎么runaway 还有JD-GUI是什么怎么打 ...

ApkIDE里面可以直接查看代码呀,编辑-》打开java源码

不过我一直习惯先解压apk得到classes.dex,然后用Android逆向助手把dex转换成jar,再用jd-gui查看源码。
Ham_888 发表于 2015-7-30 10:38 来自手机
liye1320 发表于 2015-7-29 17:15
ApkIDE里面可以直接查看代码呀,编辑-》打开java源码

不过我一直习惯先解压apk得到classes.dex,然后 ...

懂了     哈哈昨天试了一下真的成功了
1156594716 发表于 2015-7-29 12:50
吾爱扣扣 发表于 2015-7-29 12:51
你发错地方了
tony2526 发表于 2015-7-29 12:57
教程很精彩,谢谢分享
一块两毛五 发表于 2015-7-29 13:05
你们都是会技术的大牛
kingcloud 发表于 2015-7-29 14:33 来自手机
感谢分享优秀教程
琅琊王 发表于 2015-7-29 14:45
以后收费软件 再也不用担心扣费用了,之前跑酷扣了好几块钱了!
沉默抚土 发表于 2015-7-29 14:57 来自手机
刚好想学学 谢谢
tianchao110 发表于 2015-7-29 15:09
学习了,回去试试看
1139824217 发表于 2015-7-29 15:19
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表