KoZ 发表于 2024-11-17 21:26

某游戏新手破解方式

这个游戏原帖在:https://www.52pojie.cn/thread-1027327-1-1.html
之所以发是因为由于更新内购,原方法不适用了。


第一步:拖入jadx中,查看代码,搜索9000、支付相关关键词。修改smail文件使返回值满足9000的逻辑。修改后能够显示支付成功。

public static k b(int i) {
      if (i != 4001) {
            if (i != 5000) {
                if (i != 8000) {
                  if (i == 9000) {
                        return SUCCEEDED;
                  }
                  switch (i) {
                        case GamesStatusCodes.STATUS_MULTIPLAYER_ERROR_NOT_TRUSTED_TESTER /* 6001 */:
                            return CANCELED;
                        case GamesStatusCodes.STATUS_MULTIPLAYER_ERROR_INVALID_MULTIPLAYER_TYPE /* 6002 */:
                            return NETWORK_ERROR;
                        default:
                            return FAILED;
                  }
                }
                return PAY_WAITTING;
            }
            return DOUBLE_REQUEST;
      }
      return PARAMS_ERROR;
    }
}


第二步:虽然第一步支付成功了,但是回到游戏会显示支付失败,通过打开debug查看日志,看到支付成功后,失败的关键词 “玩家放弃等待...........”
jadx定位代码,发现这里有个支付的callback会判断一个参数,这个参数应该和某宝的支付返回无关,像是一个服务器上的校验,但是没关系,直接在smail中修改逻辑即可,修改后的源码效果如下:
PayImpl.checkOrderStatus(activity, str7, Assembly.isPortrait, new CheckPayOrderStatusCallback() { // from class: com.ghomesdk.gameplus.pay.PayImpl.1.1
                        @Override // com.ghomesdk.gameplus.pay.CheckPayOrderStatusCallback
                        public void callback(int i2, String str8) {
                            if (payCallback != null) {
                              if (0 == 0) {
                                    StringUtils.isNotEmpty(orderModel.getCodeKey());
                                    if (0 != 0) {
                                        payCallback.callback(Integer.valueOf("-10869638").intValue(), "扫码支付成功。", hashMap);
                                    } else {
                                        payCallback.callback(Integer.valueOf("0").intValue(), "支付成功。", hashMap);
                                    }
                              } else if (0 == -1) {
                                    Log.debug(PayImpl.TAG, "玩家放弃等待...........");
                                    payCallback.callback(Integer.valueOf("-10869604").intValue(), ErrorCodeUtil.getMessageByErrorCode("-10869604", "支付失败,请稍后再试"), hashMap);
                              } else {
                                    payCallback.callback(Integer.valueOf("-10869604").intValue(), ErrorCodeUtil.getMessageByErrorCode("-10869604", "支付失败,请稍后再试"), hashMap);
                              }
                            }
                        }
                  });



第三步:重新打包编译,安装,支付成功后,礼包也顺利到账,破解完成。但是经过查看debug信息发现,会有一些onload的信息上传,所以怀疑是有服务器收集信息,虽然能玩爽了,但是容易被人家抓到白嫖,仅当做学习使用。

hnbc5668 发表于 2024-11-18 07:13

这也可以高手在民间

gegegefei 发表于 2024-11-18 07:01

感谢分享教程心得,我也看看,学习一下思路。

ymx920 发表于 2024-11-18 07:32

66666这也行?

baitou 发表于 2024-11-18 07:47

这也行666666

kenkenss 发表于 2024-11-18 07:59

这个思路不错

Rwl6688 发表于 2024-11-18 08:03

感谢分享,厉害

Dylanzhaoer 发表于 2024-11-18 08:38

感谢分享

traces2017 发表于 2024-11-18 08:39

感谢大神无私分享教程心得!认真学习!

LemonLemonade 发表于 2024-11-18 08:40

好哇,谢谢楼主分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 某游戏新手破解方式