123下一页
返回列表 发新帖

乐播投屏去广告

[复制链接]

9

主题

336

回帖

1579

积分

高中生

Rank: 4

金币
465
好评
5
信誉
100

考神

发表于 2026-2-23 22:34:32 来自手机  | 显示全部楼层 | 阅读模式  来自 河北
版本 8.20.20
1.去广告
在投屏时开头有 秒后 相关关键字 搜索 秒后 可以找到很多结果 最匹配的就是
com.hpplay.sdk.sink.util.Resource
addString(KEY_ts, "__TS__seconds later ", "__TS__秒后", "__TS__秒後", "__TS__秒後");
public static final String KEY_ts = "ts";
搜索 "ts" 可以找到很多调用 我们先看 com.hpplay.sdk.sink.business.ads.controller.video.VideoADController
继续点击右上角方向盘 找到构造函数 长按查找调用处
我们可以找到很多调用
继续查找调用
经过分析可以得出被 ProcessBackAD ProcessPauseAD ProcessVideoPatchAD ProcessVideoPauseAD 调用 基本都有 onRequestAD requestAD
新修改方法
这里发现通过原修改方法 在视频播放完后还可能有广告 抓包发现是 queryCreative 搜索可以追踪到 VideoPostADRequest 搜索可以看到广告请求基本都有
boolean isADEnable = Switch.getInstance().isADEnable();
我们直接跳转 修改 isADEnable 强行返回false
com.hpplay.sdk.sink.cloud.Switch.isADEnable()
.method public final isADEnable()Z
    .locals 1
    const/4 v1, 0x0
    return v1
.end method

老修改方法
这里可以修改 requestAD 但考虑太复杂 要修改四处 我们 查看 onRequestAD
可以看到 基本都调用 this.mADRequest.getValidADs 获取可用广告id列表 我们可以直接修改 让 this.mADRequest.getValidADs 返回null 我们假设调用处都做了广告id list的null 判断
修改
com.hpplay.sdk.sink.business.ads.cloud.ADRequest.getValidADs()
.method public getValidADs(Lcom/hpplay/sdk/sink/bean/ADBean;Ljava/util/List;)Ljava/util/List;
    .locals 1
    const/4 v0, 0x0
    return-object v0
.end method
2.去除签名校验
之后会发现有签名校验 会出现 不支持私自修改签名
我们在dex或arsc搜索 不支持私自修改签名 找到id 7f0d027a 在dex搜索 找到在 com.hpplay.happyplay.aw.WelcomeActivity 有调用 发现是在 getSignFailedView()
查找 getSignFailedView 调用 发现当 SignCheckHelper.getInstance().check() 为false 会调用 跳转到 SignCheckHelper.getInstance().check() 我们尝试让它强行返回true
.method public check()Z
    .locals 1
    const/4 v1, 0x1
    return v1
.end method
打包安装后可以正常打开了
3.包名共存
当我们把包名共存后 发现打开软件无法正常使用网络相关功能 最明显的就是登录功能 抓包发现正常软件登录时会请求 /miniApp/shortUrl 在修改包名的版本不会调用 /miniApp/shortUrl 查找 /miniApp/shortUrl 发现在 getShortUrlDomain() 被调用 再次查找会发现在 com.hpplay.happyplay.user.view.LoginView.createNormalLogin(String str) 调用
最有可能的是
if (TextUtils.isEmpty(Session.getInstance().mToken)) {
   SinkLog.i(this.TAG, "createNormalLogin ignore, token empty");
   return;
}
token为空的情况 我们hook SinkLog.i 发现在修改包名后 打印了 createNormalLogin ignore, token empty 调用了 查找 mToken 字段 的 put 调用
发现在 com.hpplay.sdk.sink.cloud.AuthSDK 设置 一直查找调用处 循环到 com.hpplay.sdk.sink.cloud.AuthSDK$3.onRequestResult 查找构造函数调用处 找到 authInSubThread 这个似乎就是构造token请求的方法
因为不知道为什么token为空 在之前代码可以分析到基本都是使用 HttpEncrypt 来发送请求 为了方便查看错误token返回值是什么 hook decode 发现获取token响应请求返回找不到包名信息 所以尝试把 authInSubThread 的 package 参数 改为固定原软件包名

invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v2
替换为
const-string v2, "com.hpplay.happyplay.aw"
const-string v9, "package"
打开后 软件可以正常请求
4.去除未登录的强制登录
未登录每次打开都会出现登录弹窗 看起来像是 LoginView 查找构造函数调用处 发现是 com.hpplay.happyplay.aw.app.ForceLoginActivity 通过 activity记录 发现是 com.hpplay.happyplay.aw.app.ForceLoginActivity 查找调用处 发现在 goToForceLogin 调用 且被MainActivity调用 我们将它直接return即可
.method public goToForceLogin()V
  .locals 0
  return-void
.end method
重启发现登录弹窗消失
5.伪会员
在上面分析 我们可以发现在 有 hasVipFeature 调用 如果 hasVipFeature 为true 就弹出toast提示是会员已跳过广告 所以我们将hasVipFeature 固定返回true
com.hpplay.sdk.sink.rights.RightsManager.hasVipFeature(String str)
.method public hasVipFeature(Ljava/lang/String;)Z
    .locals 1
    const/4 v0, 0x1
    return v0
.end method

查看首页未开通会员会提示 开通会员 优先从arsc搜索 开通会员 有几个 其中最有可能的就是 home_btn_buy_vip id为 0x7f0d015a 查找发现 updateBtnTxt$lambda-3(BuyVipButton buyVipButton)
只有
boolean isLogin = UserManager.getInstance().isLogin();
boolean isVip = RightsManager.getInstance().isVip();
两个变量一个为false 就提示开通会员 isLogin太复杂 因为只是本地 就不做本地账号了 我们查看isVip  
RightVipAuthBean.Data sinkRights = getSinkRights();
(sinkRights == null || TextUtils.isEmpty(sinkRights.expire) || sinkRights.isExpire != 0) ? false : true;
查找 getSinkRights 最终找到在
com.hpplay.sdk.sink.rights.bean.RightVipAuthBean.parseJson(String str)
修改
会员等级
    const-string v3, "memberTypeLevel"
    invoke-virtual {p0, v3}, Lorg/json/JSONObject;->optInt(Ljava/lang/String;)I
    move-result v3
替换
    const/4 v3, 0x4  # 直接使用常量4,不调用optInt


会员过期
    const-string v3, "expire"
    invoke-virtual {p0, v3}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
    move-result-object v3
替换为
    const-string v3, "2099-12-31"  # 设置过期时间为未来

是否有效
    const-string v3, "isExpire"
    invoke-virtual {p0, v3}, Lorg/json/JSONObject;->optInt(Ljava/lang/String;)I
    move-result v3
替换为
    const/4 v3, 0x0  # 设置为未过期 (0=未过期)

即可
6.去更新
抓包 发现每次更新都请求
Author/UpdateApp
搜索 发现几个都在 checkUpdate 调用
搜索方法 把方法体置空
  .locals 0
  return-void
已有1人评分好评 理由
ayang168 + 1 希望大佬发一个成品

查看全部评分 总评分:好评 +1 

回复

使用道具 举报

8

主题

1481

回帖

2903

积分

大学生

Rank: 5Rank: 5

金币
556
好评
1
信誉
100
发表于 2026-2-23 22:40:55 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3412
好评
164
信誉
119

考神MT论坛新人MT论坛活跃会员MT论坛帅哥MT论坛灌水老大MT论坛侠客MT论坛最佳新人

发表于 2026-2-23 22:46:17 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

0

主题

1248

回帖

3040

积分

大学生

Rank: 5Rank: 5

金币
3268
好评
0
信誉
98
发表于 2026-2-23 22:47:27 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

23

主题

2392

回帖

7416

积分

硕士生

Rank: 6Rank: 6

金币
1435
好评
21
信誉
101

MT论坛新人考神

发表于 2026-2-23 22:49:48 来自手机  | 显示全部楼层  来自 湖南
不错
但要是配个图会好很多
回复

使用道具 举报

31

主题

4640

回帖

1万

积分

博士生

常常被打人员

Rank: 7Rank: 7Rank: 7

金币
1253
好评
28
信誉
145

MT论坛帅哥考神MT论坛最佳新人MT论坛新人MT论坛活跃会员

QQ
发表于 2026-2-23 22:53:24 来自手机  | 显示全部楼层  来自 陕西
我嘞乖,纯干货
回复

使用道具 举报

39

主题

1192

回帖

6448

积分

硕士生

孤儿

Rank: 6Rank: 6

金币
1109
好评
82
信誉
98
发表于 2026-2-23 22:58:33 来自手机  | 显示全部楼层  来自 四川
手搓代码的大佬啊
虽然看着像狂草字的作文密密麻麻看得人眼花缭乱
也不妨碍本质是优秀的一篇帖子
回复

使用道具 举报

1

主题

1627

回帖

4178

积分

大学生

Rank: 5Rank: 5

金币
615
好评
0
信誉
100
发表于 2026-2-23 23:16:31 来自手机  | 显示全部楼层  来自 广西
看看
回复

使用道具 举报

5

主题

1581

回帖

4430

积分

大学生

Rank: 5Rank: 5

金币
3732
好评
0
信誉
95

MT论坛帅哥考神MT论坛新人MT论坛最佳新人

发表于 2026-2-23 23:16:45 来自手机  | 显示全部楼层  来自 广东
感谢大佬的分享
回复

使用道具 举报

34

主题

7773

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4234
好评
24
信誉
143

考神

发表于 2026-2-23 23:40:37 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

0

主题

2976

回帖

6918

积分

硕士生

Rank: 6Rank: 6

金币
3334
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-2-23 23:44:27 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

118

主题

2441

回帖

6641

积分

硕士生

Rank: 6Rank: 6

金币
316
好评
53
信誉
25

MT论坛最佳新人MT论坛新人考神MT论坛帅哥

发表于 2026-2-24 00:25:49 来自手机  | 显示全部楼层  来自 河南
你还是看我帖子吧
回复

使用道具 举报

6

主题

2144

回帖

5698

积分

硕士生

Rank: 6Rank: 6

金币
3400
好评
0
信誉
100
发表于 2026-2-24 01:04:43 来自手机  | 显示全部楼层  来自 陕西
感谢分享
回复

使用道具 举报

21

主题

4592

回帖

1万

积分

博士生

论坛小虾米

Rank: 7Rank: 7Rank: 7

金币
946
好评
2
信誉
100

考神

发表于 2026-2-24 01:41:06 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

6

主题

2652

回帖

7383

积分

硕士生

Rank: 6Rank: 6

金币
4119
好评
3
信誉
100

考神MT论坛最佳新人

发表于 2026-2-24 03:43:17 来自手机  | 显示全部楼层  来自 江苏–南通–如皋
好帖,以后有空时,实操一下,感觉学会这贴,就能对付大多数APP了
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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