本帖最后由 zch11230 于 2022-8-27 19:00 编辑
最近被封在家里好无聊啊,在电视上装了个贪吃蛇和孩子一起玩,才开始玩孩子还是挺有兴趣。
但是没玩几把就提示体力不够,需要买钻石兑换体力,解锁其它角色也需要钻石。
还不便宜,25块钱充一次。
取消支付后提示购买失败,想要试试能不能破解。
很老的游戏了,应用2017年更新的,没有加固,感觉应该希望比较大.
搜索各种字符串,比如9000 success pay result 支付,等和充值相关的文字,最终在com.holyblade.tv.sdk.PayActivity找到了相关的代码。
可以看到有2种大致情况,支付了和没支付,其中支付了又有支付成功和支付失败2种情况,总共细分为3种.
[Java] 纯文本查看 复制代码 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处后,现在代码变成了这样,不管什么情况都是支付成功:
[Java] 纯文本查看 复制代码 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
[Java] 纯文本查看 复制代码 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
再次保存编译,这下点购买直接就成功了,不用跳转支付界面
所有皮肤已解锁
|