吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16154|回复: 55
收起左侧

[Android 原创] 割绳子游戏破解(干货篇)

  [复制链接]
BubblePig 发表于 2017-12-24 10:14

割绳子游戏破解(经验篇)

0x00 前言:

之前都是在说使用关键字进行破解,今天就来说说如果没有关键字的话应该怎么办,应该使用什么方法来进行对支付位置的寻找,以及其中应该进行怎样的破解。建议先看看之前写的两篇,并且进行一个练习,才能更好的进步。

1.内购破解,超详细 hxxps://bbs.ichunqiu.com/thread-30248-1-1.html

2.内购破解,加简单自定义Toast窗 hxxps://bbs.ichunqiu.com/thread-30390-1-1.html

0x01 环境

1.原版apk 地址:见附件

2.破解版APk 地址(方法1):见附件

0x02 工具

1.APKIDA

0x03 破解流程

1.游戏试玩分析

2.权限删除

3.函数查找

4.静态分析

5.修改方法

6.编译,测试

0x04 可以收获的干货(猪猪小本本)

1.如何进行游戏试玩分析。

2.支付的常用方法名

3.咕咪游戏支付的常用名称

4.java结合smali分析

5.<a href="#ct1">三种种基本的破解方法</a>

0x05 正式开始

1.首先是游戏的试玩分析阶段。

1.1 打开游戏,然后点击购物车。

1.2 进行尝试购买

1.3 取消之后发现没有任何关键字提示

2.把APK丢在APKIDE中反编译,把关键权限干掉。

2.1 原因就是防止app偷偷自己调用权限。因为是通过短信以及打电话的方式来进行一个购买,所以这里删掉,它自然就没办法进行调用了。

2.2 需要干掉的权限。

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>

3.破解

3.1 关键函数 onResult

这个是支付方法的常用名称

找到了很多的含有onResult的地方,我们需要判断onResult和支付相关所在的位置。

3.2 在咕咪游戏中PayCallback是一个关键点,我们进行PayCallback搜索,找到了一个含有PayCallback的文件。

3.3 双击点开ChinaBillingPayCallback,找到onResult,然后进行分析

3.4 我们先对onResult 进行一个分析,结合java代码。

查看伪java代码。

我们看到i是我们重点的关注对象。返回到smali代码中查看,相对应的smali代码中就是v1

分析结果:这个v1是控制整个支付流程的要点,考虑的地方就要通过改变v1的值来进行破解。通过程序分析,我们得到了四种路径,总有一种路径会通向支付成功,不过这个就要进行尝试了。

在进行尝试分析的时候,就是通过更改v1的值来进行判断,这里就不再演示。通过判断得知,只有当v1为1的时候,才可以购买成功,那我们的破解思路就是要让v1的值为1。

<div id="ct1"></div>

3.5 第一种破解方法。 

思路:用if语句进行判断条件,那我直接把if语句删掉。

编译测试。记得,在编译的时候记得进行保存。

成功!

3.6 第二种破解方法。

思路:在判断之前,给p1赋值为1。

进行编译测试。

成功!

3.7 第三种破解方法。

思路:我不管你判断是什么样子,你判断无非是改变v1的值,我直接在判断的最后结果上把v1重新赋值为1。

编译,进行调试。

测试结果成功,我就不用图片占位置了。

总结:

这次是在没有关键字可以用的情况下进行破解的思路和方法。还有其他很多种破解的方法,希望我们可以一起学习,一起努力,一起分享。

破解很简单,难的是判断寻找破解位置! --HAI_

原APK:链接:https://pan.baidu.com/s/1eRHuvbc 密码:9b13
破解后:链接:https://pan.baidu.com/s/1bo8CX35 密码:hop6

免费评分

参与人数 22吾爱币 +29 热心值 +19 收起 理由
friendfz + 1 + 1 谢谢@Thanks!
春天小雨 + 1 + 1 谢谢@Thanks!
普通人001 + 1 + 1 我很赞同!
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
宅友 + 1 + 1 感觉是好老的游戏了,想到了涂鸦弹跳
旋木过流年 + 1 + 1 谢谢@Thanks!
stars-one + 1 + 1 谢谢@Thanks!
zhw16868 + 1 + 1 谢谢@Thanks!
jacky520510 + 2 + 1 我很赞同!
IceWind + 1 + 1 谢谢@Thanks!
zhishui + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kilkilo502 + 1 已答复!
li6893 + 1 用心讨论,共获提升!
zuiai125520 + 1 热心回复!
寒蝉鸣泣之时 + 1 + 1 谢谢@Thanks!
连晋 + 1 + 1 点赞点咋 辛苦了
zhiyi1120 + 1 + 1 谢谢@Thanks!
jiale58 + 1 + 1 我很赞同!
xiangyuruchu520 + 1 + 1 热心回复!
pro713 + 1 + 1 谢谢@Thanks!
sunnylds7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
GODHGF + 1 + 1 热心回复!

查看全部评分

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

stars-one 发表于 2017-12-30 20:54
楼主大大,能把那个ChinaBillingCallBack文件分析地清楚一点吗?为什么跳过cond_0就能破解成功,那个java伪代码,我看得好久都无法理解它的逻辑。。
下面是ChinaBillingCallBack文件的java伪代码
[Java] 纯文本查看 复制代码
package com.mygamez.billing;

import cn.cmgame.billing.api.GameInterface.IPayCallback;
import com.mygamez.common.Log;

public class ChinaBillingPayCallback
  extends AbstractChinaBillingPayCallback
{
  public ChinaBillingPayCallback(IChinaBillingListener paramIChinaBillingListener)
  {
    super(paramIChinaBillingListener);
  }
  
  public GameInterface.IPayCallback getCallBack(final String paramString)
  {
    new GameInterface.IPayCallback()
    {
      public void onResult(int paramAnonymousInt, String paramAnonymousString, Object paramAnonymousObject)
      {
        int i = paramAnonymousInt;
        if (paramAnonymousInt == 1) {
          i = 1;
        }
        for (;;)
        {
          BillingResult localBillingResult = new BillingResult();
          localBillingResult.setResultCode(i);
          localBillingResult.setBillingIndex(paramString);
          localBillingResult.setReturningObject(paramAnonymousObject);
          localBillingResult.setCode(paramAnonymousString);
          Log.i("MySDK Billing Java", "CMCC object toString(): " + paramAnonymousObject.toString());
          Log.i("MySDK Billing Java", "CMCC result: " + localBillingResult.toJSON());
          ChinaBillingPayCallback.this.launchResultReceived(localBillingResult);
          return;
          if (paramAnonymousInt == 3) {
            i = 3;
          } else if (paramAnonymousInt == 2) {
            i = 2;
          } else if (paramAnonymousInt == 0) {
            i = 0;
          }
        }
      }
    };
  }
}
q369129672 发表于 2017-12-24 10:22
杭电吴彦祖 发表于 2017-12-24 10:23
zrff 发表于 2017-12-24 10:25
真的是干货篇
bapi 发表于 2017-12-24 10:27
看不懂但是要顶顶
noddos 发表于 2017-12-24 10:34
学习了,感谢教程
tomemouse 发表于 2017-12-24 11:20
这个要支持一下
黄金小萝卜头 发表于 2017-12-24 12:24
感谢分享,学习到了。
ghshr521 发表于 2017-12-24 12:47
     正在学习中
吊名想三天 发表于 2017-12-24 13:06
牛逼了 我把  商城都买爆了  发现没有乐趣》。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-29 15:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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