给Android App去广告

本次修改的app为电影猎手(Movie Hunter),这是一款可以观看各类视频资源的 Android 应用,拥有较丰富的视频库和流畅的播放体验。由于其盗版性质,它没有在官方应用商店上架,应用内置了大量广告,影响使用体验。本教程记录一次对该 APK 去广告的修改过程及用到的工具,供有同类需求的朋友参考。

apk下载地址: 原版 去广告版

免责声明: 本文仅用于技术研究和学习交流,请勿用于任何商业用途或非法用途。请遵守当地法律法规,自行承担一切后果。


修改目标

  1. 移除启动广告,自动跳过广告倒计时
  2. 屏蔽首页推荐广告
  3. 屏蔽所有页面的页面广告
  4. 过滤首页 Banner 广告
  5. 过滤广场列表广告

修改过程

以下是我对 APK 文件的 smali 修改操作记录。


启动广告

文件:SplashActivity2

  • 取消加载广告图片 操作: 注释第 597

  • 自动跳过广告 操作: 注释第 21072109新增代码:

    1
    2
    
    .registers 1
    const/4 v0, 0x0
    

所有页面的赌博广告

文件:AppConfigModel$Companion

  • 取消加载广告数据 操作: 注释第 460

首页推荐广告

文件:Recommend2Fragment

  • 屏蔽首页推荐加载广告 操作: 注释第 1166

视频详情页广告

文件:VideoInfoFragment

  • 隐藏指定广告视图 操作: 在第 3020 行下方添加两行:

    1
    2
    
    const/4 v2, 0x8
    invoke-virtual {v1, v2}, Landroid/view/View;->setVisibility(I)V
    

首页 Banner 广告过滤

文件:Recommend2Fragment

  • 707 行的方法用于重新设置 Banner 列表

    • HomeRecemdItemBean.type == 3 的项是广告,需要在代码中过滤掉该类型的 Banner。

广场列表广告过滤

文件:SocialFeedCloneFragment

  • 475 行:加载广场数据

文件:SocaialViewModel

  • 1044 行:加载数据到 LiveData

文件:SocialViewModel$getSocialPostBeanList$2$2

  • 97 行:设置获取到的列表数据

    • 在这里对数据进行过滤
    • 在设置 LiveData 前排除广告项

文件:SocialPostBean

  • 此类为完整结果类,包含 listpagepageSizetotal

  • 188 行有 copy() 方法

    • 可参考此 copy() 方法新写一个 copySkipAds(),对 list 过滤广告后再拷贝一份。

文件:Post

  • 此类有一个方法 isAds() 判断是否为广告项。

注意事项

  • Android 编译器的寄存器分配算法有时会 把参数寄存器当成临时变量使用,若分配的寄存器数量过多,编译后代码可能出错。
  • 修改后一定要重新打包签名并安装,再用 jadx-gui 反编译成 Java 代码,检查逻辑是否正确。

常用工具

这里推荐几款我在修改过程中用到的工具:

jadx-gui

  • 用途: 反编译 APK 到 Java 代码

  • 特点:

    • 变量和方法自动重命名
    • 匿名类、内部类处理较好
    • 可一键导出全部源码
    • 支持代码跳转和搜索
  • 建议: 用来理解逻辑、验证修改效果


apktool-gui(Windows)

  • 用途: 反编译/回编译 Smali 工程

  • 功能:

    • Smali 反编译与编译
    • ZIP 对齐
    • 签名
    • ADB 安装
    • APK 信息查看
  • 替代方案: 命令行 apktool + apksigner

  • 建议: Windows 用户强烈推荐


VSCode

  • 用途: 阅读与编辑 Smali、Java 代码

  • 优势:

    • 轻量级
    • 多窗口高效
  • 对比: JetBrains IDEA 在 Smali 编辑上并无优势,VSCode体验更好。


MT管理器(Android)

  • 用途:

    • 文件管理
    • Smali/资源编辑
    • 自动打包、签名
    • 直接在手机上操作
  • 建议:

    • 小改动非常方便
    • 配合 FTP 导出文件
    • 有条件建议开通 VIP

adb logcat

  • 用途: 查看安装和运行时日志

  • 用法示例:

    1
    2
    
    adb logcat -c
    adb logcat | grep --line-buffered 'com.moviehunter'
    

    当遇到崩溃或异常时,用它排查问题。


总结

通过以上方法,可以有效移除电影猎手 APK 中绝大部分广告。过程需要对 Smali 有一定了解,并反复验证逻辑正确性。不同版本的 APK 可能对应不同行号和逻辑,修改时需灵活应对。

updatedupdated2025-11-242025-11-24