zch11230 发表于 2022-8-27 18:55

某TV版贪吃蛇内购破解

本帖最后由 zch11230 于 2022-8-27 19:00 编辑

最近被封在家里好无聊啊,在电视上装了个贪吃蛇和孩子一起玩,才开始玩孩子还是挺有兴趣。



但是没玩几把就提示体力不够,需要买钻石兑换体力,解锁其它角色也需要钻石。



还不便宜,25块钱充一次。




取消支付后提示购买失败,想要试试能不能破解。




很老的游戏了,应用2017年更新的,没有加固,感觉应该希望比较大.




搜索各种字符串,比如9000   success   pay result支付,等和充值相关的文字,最终在com.holyblade.tv.sdk.PayActivity找到了相关的代码。

可以看到有2种大致情况,支付了和没支付,其中支付了又有支付成功和支付失败2种情况,总共细分为3种.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      try {
            if (requestCode == 0 && resultCode == -1) {
                Bundle bundle = data.getExtras();
                int nback = bundle.getInt("back");
                if (nback == 1) {
                  jo.put("payResult", "true");
                  jo.put("payResultInfo", "success");
                  TVSDKClient.delectedOrder(NetHander.threeRdOrderCode);
                } else {
                  jo.put("payResult", "false");
                  jo.put("payResultInfo", "failed");
                }
                Message message = Message.obtain();
                message.what = 1;
                this.messageHandler.sendMessage(message);
            } else {
                jo.put("payResult", "false");
                jo.put("payResultInfo", "pay cancel");
                Message message2 = Message.obtain();
                message2.what = 1;
                this.messageHandler.sendMessage(message2);
            }
      } catch (Exception e) {
            e.printStackTrace();
      }
      System.out.println("data:" + jo.toString());
    }


首先删除没支付的跳转判断,77和81两行if判断直接删除,所有情况强制跳转到已支付的流程,因为开始作了修改,后面的行数可能就不准了。





然后在100行,将nback的寄存器V3定义为1,强制将支付结果变为支付成功。



改了上面2处后,现在代码变成了这样,不管什么情况都是支付成功:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      try {
            Bundle bundle = data.getExtras();
            bundle.getInt("back");
            if (1 == 1) {
                jo.put("payResult", "true");
                jo.put("payResultInfo", "success");
                TVSDKClient.delectedOrder(NetHander.threeRdOrderCode);
            } else {
                jo.put("payResult", "false");
                jo.put("payResultInfo", "failed");
            }
            Message message = Message.obtain();
            message.what = 1;
            this.messageHandler.sendMessage(message);
      } catch (Exception e) {
            e.printStackTrace();
      }
      System.out.println("data:" + jo.toString());
    }




保存编译测试一下,选择钻石补充




跳到了支付方式选择界面,直接取消支付




显示支付成功,钻石也增加可以用了.




但是每次充钻石都会跳到支付界面,界面调用要耽误时间,感觉十分不爽,想改成不跳到界面,直接成功.
看了下onCreate这段,最后几行和支付结果判断是不是差不多,只差一个把payResult:true和payResultInfo:success放到JSONObject中,和      message.what 改为1

protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      requestWindowFeature(1);
      getWindow().setFlags(1024, 1024);
      getWindow().setFlags(128, 128);
      System.out.println("Payact oncreate");
      this.activity = this;
      isEnd = false;
      this.isDownLoad = false;
      jo = new JSONObject();
      this.messageHandler = new MessageHandler(this);
      Message message = Message.obtain();
      message.what = 0;
      this.messageHandler.sendMessage(message);
    }


将支付成功这一段写JSON的代码复制




粘贴到onCreate这里,复制过来的时候用到了寄存器V4,V5,V6,要根据实际情况修改一下,检查后面的代码没有用到V1 V2 V4,那就改成V1,V2,V4。




然后将       message.what的寄存器v3强制为1




再次保存编译,这下点购买直接就成功了,不用跳转支付界面





所有皮肤已解锁

老M 发表于 2022-8-28 08:29

不错,我去买台电视来试试看{:1_918:}

xx363300 发表于 2022-8-27 20:23

发个成品呗…………😂

粉笔盒子 发表于 2022-9-1 09:38

gideon 发表于 2022-9-1 08:45
建议还是不要了

为啥不要啊

福森108 发表于 2022-8-27 19:10

谢谢分享哦

yeek2006 发表于 2022-8-27 19:33

谢谢分享,厉害厉害

fa22 发表于 2022-8-27 19:34

休闲小游戏!不错!

liguang0527 发表于 2022-8-27 19:45

好厉害呦感谢分享

jxg1993 发表于 2022-8-27 19:51

感谢分享

likaiaixuexi 发表于 2022-8-27 20:11

厉害,我等膜拜大神

疯狂石头 发表于 2022-8-27 20:42

不错不错{:1_893:}

wapj13 发表于 2022-8-27 20:52

牛的牛的,,赶紧下来试试!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 某TV版贪吃蛇内购破解