吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5836|回复: 60
收起左侧

[Android 原创] 从零开始对某电视投屏软件去广告

  [复制链接]
ttttttttttt 发表于 2024-2-23 21:41
本帖最后由 ttttttttttt 于 2024-2-24 22:16 编辑

CHANGLOG

  • 2024-02-24 评论大佬说可以直接清空 goToForceLogin,于是修改了一下解决强制扫码登录的部分
  • 2024-02-23 发帖

前言

本文在两份前辈文章的基础上,完善了对某电视投屏软件去广告的思路,增加解决强制扫码登录的原创部分。

不提供成品。

需求

iOS + 华为智慧屏 V65 的使用场景下(别喷,电视不是我买的):

  • 自带 DLNA 投屏:极其难用甚至不能用
  • 第三方投屏软件:论坛大佬发的橙子投屏挺好用,但是在某App投屏遇到有闪退场景

试了下国内市场份额最大的某投屏软件,完美解决我的日常使用需求。剩下强制扫码登录、投屏广告的问题,就让我来帮看看该投屏软件的安全问题吧。

感谢

首先感谢上述两篇完全相关的教程,让我自己动手有信心。

我对 Android 和逆向完全没有了解(但有 Java 基础),论坛大佬正己的系列课程《安卓逆向这档事》非常适合入门,我 demand-driven 地看了 3 节课:

然后就自己动手做出来了(剩下的就没看了)。

所以,如果你需要文中软件的去广告版,不妨也简单看看上述 3 节课,一起动手。

准备工作

速看《安卓逆向这档事》的前 3 节视频

安装环境和软件:

  • 8.16.70版下载地址(用 base64 解码):aHR0cHM6Ly9kb3dubG9hZC5taXJyb3JjYXN0LmNuL3JlbGVhc2UvcGhvZW5peF9hcHAvMjAyNDAxMTgxNTQ3MjJfaHBwbGF5LTIwMDMtcmVsZWFzZS12OC4xNi43MF82N2FmYTYyYi5hcGs=
  • 雷电模拟器NP管理器开发者助手等其他相关软件请参考《安卓逆向这档事》

为了用 NP管理器雷电模拟器设置断网(软件设置->网络设置->断开网络

解决强制扫码登录

打开开发者助手,和某投屏软件,发现强制扫码登录的当前 Activity 为 com.hpplay.happyplay.aw.app.ForceLoginActivity

image-20240223205717596.png

使用 NP管理器,安装包提取 某投屏软件,定位,查看,单击 classes.dex(用 DEX编辑PLUS 打开,全选,确定)

image-20240223210243955.png

找到 com.hpplay.happyplay.aw.app.ForceLoginActivity 类,点击查看 smali 代码,右上角三个点切 Java 代码,观察了一下,看不出啥子。

那就找它的 Usage,搜索该类的使用:

image-20240223210732507.png

image-20240223210822213.png

搜索 PluginBpi 该类的代码中加载 ForceLoginActivity 类的逻辑:

image-20240223210917260.png

有两种改法:

  • 第一种。比较简单,直接把 goToForceLogin 方法清空,相当于把创建 ForceLoginActivity 的相关逻辑直接抹掉,代码改为以下:

    .method public goToForceLogin()V
      .registers 1
    
      return-void
    .end method
  • 第二种。在 goToForceLogin 的第一行发现一行关键代码:

      boolean isLogin = UserManager.getInstance().isLogin();
    • 下一步,搜索该类 UserManager,修改其 isLogin() 方法使其永远返回 true:

    image-20240223211130001.png

    image-20240223211247327.png

    • 该方法的代码改为以下:
    .method public isLogin()Z
      .registers 2
    
      const/4 v0, 0x1
    
      return v0
    .end method

解决咧

解决投屏广告

这里参照前辈帖子的思路(懒得赘述了),把 com.hpplay.sdk.sink.business.ads.cloud.ADRequest 类的 getValidADs 方法,找到图片所示位置,加入 const/4 p1, 0x0

image-20240223211714445.png

解决签名验证

也是参照前辈帖子的思路(懒得赘述了),搜索 SignCheckHelper 类,修改其 check 方法,让其永远返回 true,smali 代码改为以下:

.method public check()Z
    .registers 2

    const/4 v0, 0x1

    return v0
.end method

尾声

搞定啦,保存一下,NP 管理器 会自动签名,然后提取出来去安装就能用了。

免费评分

参与人数 16吾爱币 +23 热心值 +13 收起 理由
Qeeshi + 1 牛蛙
xun001 + 1 + 1 谢谢@Thanks!
egoistcy + 1 + 1 我很赞同!
fcc22 + 1 谢谢@Thanks!
老是卖你们 + 1 + 1 我很赞同!
schm168 + 1 + 1 羡慕至极,要是我能按照步骤实操出成品该有多好!
某些人 + 1 + 1 谢谢@Thanks!
Kanchow + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xuanle + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
collinchen1218 + 3 + 1 终于搞定了我持续了半年多的问题,谢谢
wyc4126 + 1 我很赞同!
kasahlee123 + 1 + 1 我很赞同!
理想的海洋 + 1 + 1 用心讨论,共获提升!
冥界3大法王 + 1 学会谢谢 了 。
homehome + 1 + 1 用心讨论,共获提升!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| ttttttttttt 发表于 2024-2-24 22:01
侃遍天下无二人 发表于 2024-2-24 12:36
太麻烦了,你直接把要改的方法清空就行了,还能提高运行效率

哇版主大大!

回复一下:

我当时没有细读代码,整块代码删怕有啥 side-effect 会影响其他功能,只想尽可能小的改动去解决。

听你一说,我重新扫了一下代码,(解决强制登录部分)确实可以:直接把 `goToForceLogin` 方法的代码删掉,留个 `.locals 0` 和 `return-void` 就行了。

算是另一种修改思路,不需要再深入去追和改 `UserManager`,我编辑一下帖子。
理想的海洋 发表于 2024-2-25 21:30
大神你好  可以把这个搞一下吗    基础不好   只看懂你的教程    这个帖子里面去登录  按上面的方法 搞不定  https://www.52pojie.cn/thread-1883888-1-1.html
正己 发表于 2024-2-23 23:11
DBasketball 发表于 2024-2-24 03:37
竟然有SignCheckHelper 类
bulesoft 发表于 2024-2-24 06:16
大佬,有没有PC端的思路啊
juecky 发表于 2024-2-24 08:18
谢谢分享,学习了
alanfish 发表于 2024-2-24 08:32
谢谢分享,学习了
理想的海洋 发表于 2024-2-24 08:38
优秀啊 大神  多谢分享
sai609 发表于 2024-2-24 08:51
国内市场份额最大的某投屏软件是?橙子投屏吗
ynzyy2023 发表于 2024-2-24 08:53
学习了,多多谢谢!!!
kasahlee123 发表于 2024-2-24 09:08
很好,学习了!!多谢分享~!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 11:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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