每日不定时更新,涵盖软件、教程、素材等资源下载。找免费资源就来酷玩资源网。

红果免费漫剧 —— MT管理器手机端去广告详细教程

酸奶丿果冻 网络技术 0

这个是用AI去除广告的软件 目前还是存在看5-6小时 会出现广告 只能清除数据缓存 有没有大佬告诉下该怎么解决
文件太大了 丢不上来 自己动下手指吧

红果免费漫剧 7.4.0.32 —— MT管理器手机端去广告详细教程
(追剧时"下一集"插播广告 / 章末广告 永久去除,含防云端覆盖)

【适配版本】红果免费漫剧 7.4.0.32(arm64)
【所需工具】MT管理器 v2.12 及以上(无需 root)
【难 度】★★★☆☆(跟做即可,全程手机操作,约 15 分钟)
【原 理】 广告由两条链路加载:①自家"excitingvideo/联盟"广告 SDK(插屏),
②云端配置下发"每 N 集插一条"的开关和阈值。
本教程:a.直接让插屏广告加载立即失败(走官方"无广告填充"降级,
播放器自动跳过广告播下一集);b.改死云端配置的接收字段,
服务端下发任何值都匹配不上,杜绝"过几小时广告又回来"。

【补丁清单】共 7 个,分布在 5 个 dex 里:
补丁1 classes8 广告总开关恒为关闭
补丁2 classes20 插屏判定强制走"开关未开启"分支
补丁3 classes23 云端配置字段改名(自家阅读内核版)
补丁4 classes20 云端配置字段改名(tomato 番茄内核版)
补丁5 classes23 配置类本地默认值改为关闭
补丁6 classes11 插屏广告工厂:加载立即失败(核心)
补丁7 classes13 联盟广告插屏接口:直接回调无广告(核心)


第 0 步 备份与打开

  1. 把 红果免费漫剧_7.4.0.32.apk 放到手机下载目录(或直接提取已安装的:
    MT管理器左侧抽屉 → 应用 → 找到红果 → 长按 → 提取安装包)。
  2. 打开 MT管理器,找到该 apk,单击 → 选择「编辑」(部分版本为:长按 →
    打开方式 → 编辑),进入 APK 内部目录。
  3. 建议先做防闪退保险:在 APK 编辑界面点右上角「功能」→「去除签名校验」
    → 方案默认 → 确定。字节系应用一般不强校验签名,但做了无害。

第 1 步 打开 DEX 编辑器

在 APK 根目录能看到 classes.dex、classes2.dex …… classes23.dex。
点击 classes8.dex → 选择「DEX编辑器」。
(提示:如果想一次搜多个 dex,可以长按多个 dex → 用「DEX编辑器(多开)」。)
以后每个补丁都是同样三步:搜索类名 → 打开类 → 找到方法改代码。

注意:
· smali 里若看到 .line / .prologue 开头的行是调试信息,不用管也不要删,
下面代码块只对应真正的指令行;
· 逗号、空格、寄存器 v0/v6、p0/p1、数字 0x0/0x4 必须逐字符一致,
字母 O 和数字 0、字母 l 和数字 1 不要抄错;
· 每改完一个类点「保存」,MT 会自动重新编译该 dex,报错就说明抄错了。


第 2 步 补丁1 —— 广告总开关恒为关闭(classes8)

  1. 打开 classes8.dex,搜索类名:ExperimentUtil

  2. 打开 com.dragon.read.reader.ad.experiment.ExperimentUtil

  3. 类内查找方法:G9G66 (这是个返回广告开关的静态方法)

  4. 原代码:

    .method public static G9G66()Z
    .locals 1
    ......(中间几行不用动)
    if-eqz v0, :cond_0
    iget-boolean v0, v0, Lcom/dragon/read/base/ssconfig/model/ShortSeriesAdConfig;->shortVideoAdEnable:Z
    return v0
    :cond_0
    const/4 v0, 0x1
    return v0
    .end method

  5. 改两处:
    ① 把 iget-boolean 那一整行替换为:

    const/4 v0, 0x0

    ② 把 :cond_0 下面的 const/4 v0, 0x1 改为 const/4 v0, 0x0

  6. 改后效果(两个 return 前都是 0x0,即永远返回"广告关闭"):

    const/4 v0, 0x0
    return v0
    :cond_0
    const/4 v0, 0x0
    return v0

第 3 步 补丁2 —— 插屏判定强制走"开关未开启"分支(classes20)

  1. 打开 classes20.dex,搜索类名:QqqQqQ9 (是个混淆名,注意大小写)

  2. 打开类 QqqQqQ9.Q9G6

  3. 类内搜索字符串:switch_disabled
    能看到附近有一行中文「短剧中插广告总开关未开启」,就说明找对了。

  4. 从 switch_disabled 往上翻约 10 行,找到这样的结构:

    :cond_4
    :goto_2
    if-nez v6, :cond_5
  5. 在 :goto_2 和 if-nez 之间插入一行:

    const/4 v6, 0x0

    改后为:

    :cond_4
    :goto_2
    const/4 v6, 0x0
    if-nez v6, :cond_5

    这样 v6 恒为 0,代码必定跳进"总开关未开启"的关闭分支,
    后面的请求插屏广告逻辑全部跳过。


第 4 步 补丁3 / 补丁4 —— 云端配置字段改名(classes23 + classes20)

这两个补丁是防"过几小时广告又回来"的关键:服务端配置是 JSON,
客户端靠 @SerializedName 注解里的 key 去匹配。key 改了,
服务端下发什么都匹配不上,本地值永远生效。

补丁3:

  1. 打开 classes23.dex,搜索类名:ShortSeriesAdConfig

  2. 打开 com.dragon.read.base.ssconfig.model.ShortSeriesAdConfig

  3. 类内搜索:short_video_ad_enable

  4. 找到字段注解:

    .field public shortVideoAdEnable:Z
    .annotation runtime Lcom/google/gson/annotations/SerializedName;
    value = "short_video_ad_enable"
    .end annotation
    .end field

  5. 只把 value 引号里的内容改为:

        value = "short_video_ad_enable_off"

    注意:别误改下面的 short_video_ad_expired_time 等其他行。

补丁4:

  1. 打开 classes20.dex,搜索类名:ShortSeriesAdConfig
  2. 打开 com.bytedance.tomato.onestop.config.model.ShortSeriesAdConfig
  3. 同样把 value = "short_video_ad_enable" 改为
    value = "short_video_ad_enable_off"

第 5 步 补丁5 —— 配置类本地默认值改为关闭(classes23)

  1. 还是在补丁3那个类里(ShortSeriesAdConfig),找到构造方法
    (方法列表里名字叫 的那个)。
  2. 类内搜索:shortVideoAdEnable
    在 里有一行赋值:

    iput-boolean v1, p0, Lcom/dragon/read/base/ssconfig/model/ShortSeriesAdConfig;->shortVideoAdEnable:Z

    (它上面一行是 ...->seriesRerankTimeInterval:J 的 iput-wide,
    可以用来确认位置)

  3. 在这行【上面】插入一行:

    const/4 v1, 0x0

    (因为 0x1 被复用,必须在这里单独清零,不能改别处)


第 6 步 补丁6 —— 插屏广告工厂加载立即失败(classes11,核心)

  1. 打开 classes11.dex,搜索类名:InterstitialAdFactory

  2. 打开 com.ss.android.excitingvideo.interstitial.InterstitialAdFactory

  3. 找到方法:requestInterstitialAd (插屏广告的统一请求入口)

  4. 在方法里定位这两行(它们之间隔着十几行):

    起点行:new-instance v1, Lye/QqQ;
    终点行:invoke-virtual {v1}, Lye/GQG66Q;->g6Gg9GQ9()V

  5. 把【起点行~终点行(含这两行本身)】整段删除,在原位置粘贴以下内容:

    new-instance v1, Lcom/ss/android/excitingvideo/exception/RequestException$InterstitialRequestException;
    const/4 v2, 0x4
    const-string p1, "no ad (patched)"
    invoke-direct {v1, v2, p1}, Lcom/ss/android/excitingvideo/exception/RequestException$InterstitialRequestException;-><init>(ILjava/lang/String;)V
    invoke-static {v1}, Lkotlin/ResultKt;->createFailure(Ljava/lang/Throwable;)Ljava/lang/Object;
    move-result-object v1
    invoke-static {v1}, Lkotlin/Result;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object;
    move-result-object v1
    invoke-interface {v0, v1}, Lkotlin/coroutines/Continuation;->resumeWith(Ljava/lang/Object;)V
  6. 千万注意:
    · 方法开头 new-instance v0, Lkotlinx/coroutines/CancellableContinuationImpl;
    那几行【不要动】;
    · 方法结尾 invoke-virtual {v0}, ...->getResult() 之后的部分【不要动】;
    · 只删"起点行~终点行"这一段。
    改完效果:不发起任何广告网络请求,直接按 SDK 原本的失败路径回调,
    播放器收到失败后走官方"无广告填充"降级 → 自动跳过广告播下一集。


第 7 步 补丁7 —— 联盟插屏接口直接回调无广告(classes13,核心)

  1. 打开 classes13.dex,搜索类名:MUnionAdRequestService
  2. 打开 com.ss.android.union_core.spi.MUnionAdRequestService
  3. 找到方法:loadFeedInterstitialAd
  4. 把整个方法(从 .method 到 .end method)替换为:

.method public loadFeedInterstitialAd(Landroid/content/Context;Lcom/ss/android/union_api/load/MUnionSlot;Lcom/ss/android/union_api/load/MUnionInterstitialAdListener;)V
.locals 2

const/4 v0, 0x4
const-string v1, ""

invoke-interface {p3, v0, v1}, Lcom/ss/android/union_api/load/MUnionAdListener;->onError(ILjava/lang/String;)V

return-void

.end method

(这个方法整段只有上面这么多行,放心全选替换。
错误消息特意用空字符串 "",原因见下方"重要提醒"。
同类里的 loadRewardAd 千万【不要动】,那是"看视频解锁/得金币",
动了会导致解锁功能异常。)

【重要提醒】classes13 这个 dex 的方法引用已经顶到 65535 上限(dex 的
64K 限制),改动它时【绝对不能】新增类、新增方法或新增字符串常量,
否则保存后该 dex 会编译成残废文件(表面看着正常,装上必闪退,
而且 MT 不会报错!)。所以:错误消息一律用现成的 "" ;别把其他类
粘进来;补丁6 的代码是加在 classes11 的(它有余量),别搞混 dex。
改完 classes13 后建议验证一下:文件大小和改前应非常接近(差几百
字节以内)。


第 8 步 保存、打包、签名、安装

  1. 7 个补丁全部改完并保存后,一路按返回键退出。
  2. MT 会弹出「APK 已修改,是否保存并更新?」→ 确定,等待自动打包
    (这个包很大,140MB+,耐心等,期间别切走)。
  3. 打包完成后生成新的 apk 文件(默认在原 apk 同目录)。
  4. 长按新 apk → 「签名」→ 方案选 V2(或 V1+V2 都勾)→ 确定等待完成。
  5. 先卸载手机上的原版红果(签名不同不能覆盖安装,会丢登录状态,
    红果支持手机号验证码重登,书架进度云端同步会回来)。
  6. 安装新 apk,打开即用。

常见问题

Q1:保存 dex 时编译报错?
99% 是抄错。重点核对补丁6/7:寄存器名(v0 v1 v2 p1 p3)、
0x0 和 0x4、方法名的每个字符;确认没把方法开头/结尾误删。

Q2:安装时提示"解析包错误"或安装失败?
打包没完成就安装了,或者签名没做完。重新走第 8 步。

Q3:打开闪退?
①确认做过「去除签名校验」;②补丁6 删多/删少了,重新核对起止两行;
③重点检查补丁7:classes13 引用池已顶格(详见第 7 步的"重要提醒"),
只要往它里面新增过任何类/方法/字符串,整个 dex 就废了,装上必闪退——
严格按教程用 "" 空字符串,不要自作主张写别的提示文字;
实在不行先只保留补丁1~5(配置层)测试,再逐个加回 6、7。

Q4:用几天后广告又出现了?
不会。补丁3/4/5 已把云端配置链路改死,服务端下发不进来;
补丁6/7 是代码级短路,跟云端无关。若真还有广告,看看广告形式:
"看视频得金币/解锁"的激励视频位是特意保留的(补丁说明第 7 步),
集间自动插播的插屏广告才是本教程的目标。

Q5:以后版本升级了怎么办?
类名都是混淆/固定的,新版本里用类名全局搜索重新定位即可,
补丁思路完全一样(找 shortVideoAdEnable / InterstitialAdFactory /
MUnionAdRequestService)。


免责声明:本教程仅用于个人学习研究 Android 逆向技术,修改后的安装包
仅供本人使用,请勿二次分发或用于商业用途,支持请使用官方版本。

手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail: kuwanw@qq.com

同类推荐
评论列表
签到 顶 踩