吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7369|回复: 73
收起左侧

[Android 原创] 某麦演出app分析(二)---显示购买按钮

  [复制链接]
6yanfeibiao 发表于 2023-8-8 18:31

前情提要

在成功修改了倒计时之后,进入选择票档页面还是"提交开售提醒"
image-20230719113029610.png
这里继续看下有无办法Hook一下,把"立即购买"显示出来
image-20230719112839745.png

源码分析

openSkuActivity()可以知道选择票档页面是NcovSkuActivity,沿着这方向一直定位到NcovSkuFragment.updateAllview

NcovSkuActivity->NcovSkuFragment->initData->updateAllview->this.mModel.getSkuBean().observe

每次skuBean有更新都会updateAllview一次.
而其中有一个this.skuBottomInfo,结合界面动作,只有点击了票档才会出现底部的操作栏,所以猜测这里是底部确认按钮显示的关键:
image-20230719161020249.png
继续往下看有一个叫做this.mSelectedPerform = this.mSkuBean.perform;的变量,应该就是选择了的票档.查找一下mSelectedPerform的引用:
image-20230719161334921.png
发现了mSkuBottomView,感觉距离终点越来越近了(MMSkuBottomView是我起的别名)
image-20230719162525996.png
接下来分析mSkuBottomView的基类:
image-20230719163742376.png
这个类就看得比较困难了,都是混淆后的名字,不过还好有中文哈哈哈,
其中一个函数叫h()找到想要的答案(我重命名为buyBottomUI):
image-20230719163916467.png
其中用作判断的this.f40114o就是NcovSkuBottomInfo.
经过完整的分析,最后确定只要修改skubean的api返回值,就能令到确认购买按钮显示.
以下是hook代码:

C42703["onSuccess"].overload(
  "cn.damai.commonbusiness.seatbiz.sku.qilin.bean.SkuBean"
).implementation = function (skubean) {
  console.log("C42703.onSuccess is called:" + skubean);
  console.log("class:" + skubean.getClass());
  // console.log('class:' + skubean.itemBuyBtn.btnStatus);

  showJavaObjectString(skubean);
  var result = updateSkuBean(skubean);

  this["onSuccess"](result);
};
function updateSkuBean(skubean) {
  var json = Java.use("com.alibaba.fastjson.JSON");
  var a = JSON.parse(json["toJSONString"](skubean));
  console.log("skubean data:" + a);
  console.log("skubean.itemBuyBtn.btnStatus:" + a.itemBuyBtn.btnStatus);
  a.itemBuyBtn.btnStatus = 204;
  a.perform.performSalable = true;
  a.perform.positive = true;
  a.actionControl.renderingControl.renderingType = 1;
  a.perform.skuList.forEach((element) => {
    element.frontEndStatus = 1;
    element.clickable = true;
    element.mq = 100;
  });
  console.log("skubean.itemBuyBtn.btnStatus:" + a.itemBuyBtn.btnStatus);
  var result = json["parseObject"](JSON.stringify(a), skubean.getClass());
  console.log("toJavaObject result:" + result);
  return result;
}
let C20621 = Java.use(
  "cn.damai.commonbusiness.seatbiz.sku.qilin.model.SkuModel$1"
);
C20621["onSuccess"].overload(
  "cn.damai.commonbusiness.seatbiz.sku.qilin.bean.SkuBean"
).implementation = function (skubean) {
  // console.log(`SkuModel..onSuccess is called`);
  console.log("SkuModel..onSuccess called:" + skubean);
  console.log("class:" + skubean.getClass());
  // console.log('class:' + skubean.itemBuyBtn.btnStatus);
  showJavaObjectString(skubean);
  var result = updateSkuBean(skubean);
  this["onSuccess"](result);
};

其中hook的函数是skuRequest.requestcallback中的onSuccess函数,而不是直接修改api的返回值.
而这样的onSuccess一共有两处:C20621C42703
这样的话就能在演出未开始正式开售之前,提前进入到选择页面:
image-20230720175245750.png
虽然如此,也是需要等正式开售了之后才能点击正常进入到订单确认页面,如果提前点击会报错.感觉提前进入的hook到这里已经是极限了,因为订单确认页面是需要调用buildOrder成功之后的数据生成的,所以这里开始就要靠运气了

后续

有抢票经验的朋友应该会留意到一个细节,就捡漏了,当第一次尝试购票失败,就会被踢回上一页,从新选票档再提交

免费评分

参与人数 5吾爱币 +4 热心值 +4 收起 理由
junjia215 + 1 + 1 谢谢@Thanks!
houkunlin + 1 热心回复!
ooiiooiioo + 1 + 1 谢谢@Thanks!
战争末日 + 1 用心讨论,共获提升!
鸭鸭鸭? + 1 + 1 谢谢@Thanks!

查看全部评分

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

昨日记忆丶 发表于 2023-8-11 09:07
本帖最后由 昨日记忆丶 于 2023-8-11 09:28 编辑
cyxnzb 发表于 2023-8-9 16:40
好奇黄牛是怎么抢到的

我之前看过一个黄牛把自己经历说出来,他说大黄牛是不用抢票的,演唱会有人专门给大黄牛提供门票,因为快速清空票库是演唱会目的,不管是小众明星还是大众明星的演唱会都会提供,然后才是我们和小黄牛去抢的票,小黄牛也有可能直接从大黄牛那里买票,之后抬高价格,最后剩一部分是vvvip专座门票是不卖的。楼主这样破解的话如果有用,并且小黄牛也这样抢,那可能更不容易抢票了

免费评分

参与人数 1热心值 +1 收起 理由
荒岛花树 + 1 是这个理

查看全部评分

linguo2625469 发表于 2023-8-9 11:58
确实恶心 提交失败强制返回 能不能把这个hook掉 就快人一大步了
LZWYUWAN 发表于 2023-8-9 11:26
relife2023 发表于 2023-8-9 11:56
确实太难抢了。而你我的朋友
hinome 发表于 2023-8-9 13:03
感觉都是在被当猴耍
aino 发表于 2023-8-9 14:10
我已经hook到最后一步不返回了,一样抢不到
瞳戮 发表于 2023-8-9 16:09
这玩意抢票还要开会员。。。
coder1307 发表于 2023-8-9 16:30
以前我还买过林俊杰的票的,今年根本抢不到,都被黄牛脚本抢了
进击的喵星人 发表于 2023-8-9 16:34
分析一下,抢票老是提示 同一时间XX过多 是不是黑号了 不知道是什么机制
cyxnzb 发表于 2023-8-9 16:40
好奇黄牛是怎么抢到的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 12:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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