本帖最后由 小奶瓶 于 2026-8-18 08:16 编辑
APK去广告编辑器 v2.9 · 开源发布
APK Ad Remover Editor - Open Source Release
本地离线 · 字节级修补 · 数据复用优化 · 全自动流水线
一、项目简介
一款面向逆向爱好者的专业级 APK 去广告工具
本工具基于 dexlib2 构建,采用字节码直接修补方案,摒弃传统 smali 反汇编-回汇编流程,
在保证处理精度的同时将处理速度提升数倍。全程本地离线运行,不依赖任何云端服务,
支持一键完成解包 → 去广告 → 体积优化 → 打包 → 签名全流程,开箱即用。
项目信息
| 项目名称 | APK去广告编辑器(ApkEditor) | | 当前版本 | v2.9(versionCode 29) | | 开发语言 | Kotlin + Java | | 运行平台 | Android 7.0+(minSdk 24) | | 处理方式 | 全程本地离线处理,无需联网 | | 开源协议 | 仅供学习交流使用 |
二、功能特性
2.1 去广告核心能力
- 18 类广告特征全覆盖:SDK 库 / 权限 / 类 / 方法 / 资源 / URL / View / Activity / Service / Receiver 等,支持自定义增删改查与一键重置
- AXML 深度处理:移除广告组件、广告权限声明、隐藏 Res 布局广告 View
- 方法级精准处理:广告类方法置空、广告链接置空、View 几何置空
- 会员功能解锁:强制返回 true/false,解锁会员功能并屏蔽广告判定逻辑
- 广告资源清理:自动清理广告 SDK 原生库 (.so)、assets 广告资源与根目录广告文件
- Flutter 应用适配:解析 Dart AOT 快照,精准抹除 libapp.so 中的广告字符串特征
2.2 体积优化能力
- 数据复用优化:过签包(如 LSPatch 产物)复用原包数据段,最多减小约 50% 体积
- 重命名识别:原包被重命名为无后缀或任意后缀(如 assets/base、assets/base.dat)也能准确识别并优化
- DEX 体积优化:移除调试信息(行号/局部变量表),再减小 5%~15% 体积
- 智能压缩策略:大文件单次读取边读边算 CRC,消除重复 I/O
- ZIP 对齐:保证打包后 APK 可正常安装启动
2.3 稳定性与安全
- v1 + v2 双签名:兼容低版本设备,处理结果可直接安装
- DEX 崩溃防护:备份保护 + 原子写入 + 异常自动恢复,杜绝 DEX 损坏
- 低内存扫描:大 DEX 低内存安全扫描,超大 DEX 也能稳定处理不卡死
- 路径穿越防护:修复 Zip Slip 漏洞,杜绝恶意 APK 越界写文件
- 解压大小上限:防止恶意压缩包撑爆磁盘
2.4 使用体验
- 实时彩色日志:处理过程可视化,支持一键复制 / 清空
- Markdown 处理报告:自动生成,记录各阶段处理明细与体积对比
- 自动导出:处理完成自动导出到原包目录,并自动清理缓存
- 广告特征订阅:支持订阅导入与分享,快速同步更多去广告规则
- 内置更新弹窗:含进度条、百分比、版本号与文件大小
- 明暗双主题:跟随系统、白天、夜间三种模式自由切换
三、技术架构
模块 | 技术方案 | 核心说明 | DEX 修补引擎 | dexlib2 2.5.2 | 直接修改字节码,无需反汇编/回汇编 | AXML 处理器 | 自研解析器 | 解析 AXML chunk 结构,移除广告组件与权限 | 数据复用优化 | ApkDataMultiplexing | 中央目录偏移复用原包数据段 | 签名模块 | apksig + V2V3SchemeSigner | v1/v2 双签名,优化后专用签名 | Flutter 适配 | Dart AOT 快照解析 | 抹除 libapp.so 广告字符串特征 | 打包模块 | 自研 ZIP 引擎 | 智能压缩 + 对齐 + 崩溃防护 |
四、核心原理解析
4.1 数据复用优化原理
过签包(如 LSPatch 产物)在 assets/base.apk 内置原包,过签包中与原包完全相同的文件
(res 目录、lib 目录等)会重复存储一份。优化时让过签包中央目录的数据偏移指向原包内的
数据段,删除重复数据段,从而显著减小体积(最多约 50%)。
4.2 DEX 体积优化原理
DEX 的 debug info 段(行号、局部变量表、参数名)仅用于崩溃堆栈定位与调试器,
运行时完全不需要。通过重建方法体并置空 debug items,dexlib2 写回时对应数据段被丢弃,
可减小 5%~15% 体积,不影响运行功能。
4.3 重命名识别原理
按 ZIP 魔数(PK\x03\x04 等)识别嵌套子包,而非依赖文件后缀名。
因此原包被重命名为无后缀或任意后缀(如 assets/base、assets/base.dat)时,
仍能准确识别其 ZIP 容器结构并执行数据复用优化。
五、开源致谢
向以上所有开源项目作者致以诚挚感谢与敬意!
六、源码获取
完整源码包(201 个文件 · 含全部 Kotlin + Java 源码与资源)
解压后使用 Android Studio 直接打开,即可编译出可安装的 APK
七、编译环境
- 开发环境:
- - Android Studio(建议最新稳定版)
- - JDK 17+
- - compileSdk 34 / minSdk 24 / targetSdk 34
- 核心依赖:
- - dexlib2 2.5.2(DEX 字节码操作)
- - apksig 8.1.0(APK 签名)
- - BouncyCastle 1.70(证书生成)
- - Guava 27.1-android(不可变集合)
- 构建命令:
- ./gradlew assembleRelease
复制代码
八、使用指南
8.1 操作步骤
- 选择需要处理的 APK 文件(支持重命名为无后缀或任意后缀的 APK)
- 点击"开始处理",自动完成解包、去广告、体积优化、打包、签名
- 处理完成后自动导出到原包目录,并生成 Markdown 处理报告
- 处理结果可直接安装使用
8.2 更新日志
v2.9(当前版本)
· 移植 ApkDataMultiplexing 实现数据复用优化,最多减小约 50% 体积
· 识别重命名嵌套 APK,无后缀或任意后缀的原包也能准确识别
· 新增 DEX 体积优化,移除调试信息再减小 5%~15% 体积
· 优化后采用 V2V3SchemeSigner 专用签名,复用优化保持有效
· 关于页面补全开源项目与参考代码信息
v2.6
· 修复 Zip 路径穿越漏洞(Zip Slip)与解压大小上限
· 大文件打包单次读取、编辑读写异步化,性能大幅提升
· 暗色模式弹窗样式补齐、文件图标统一、体验细节打磨
九、免责声明
- 本工具仅供学习、研究与个人合法用途使用
- 请勿对您不拥有版权、未获授权或受法律保护的应用进行修改与分发
- 使用本工具处理 APK 所产生的任何后果由使用者自行承担
- 修改后的 APK 若用于商业用途或对外分发,请确保遵守相关法律法规
- 本工具按现状提供,不附带任何形式的明示或默示担保
◆ 支持与反馈 ◆
如果本项目对你有帮助,欢迎 Star 支持!
有任何问题或建议,欢迎在评论区留言反馈
你的支持是我持续更新的最大动力!
感谢阅读 · 祝使用愉快
© 2026 小奶瓶 · Powered by dexlib2 / apksig / AndroidX
|