某游戏新手破解方式

查看 60|回复 9
作者:KoZ   
这个游戏原帖在:https://www.52pojie.cn/thread-1027327-1-1.html
之所以发是因为由于更新内购,原方法不适用了。
第一步:拖入jadx中,查看代码,搜索9000、支付相关关键词。修改smail文件使返回值满足9000的逻辑。修改后能够显示支付成功。
[C] 纯文本查看 复制代码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中修改逻辑即可,修改后的源码效果如下:
[C] 纯文本查看 复制代码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   

这也可以  高手在民间
gegegefei   

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

66666这也行?
baitou   

这也行666666
kenkenss   

这个思路不错
Rwl6688   

感谢分享,厉害
Dylanzhaoer   

感谢分享
traces2017   

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

好哇,谢谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部