Skip to content

2.1.2

Choose a tag to compare

@yylsping yylsping released this 19 Aug 13:46
· 47 commits to main since this release

重大重构,请尽快更新

2.1.2 变更说明

本版本对启动时序、Hook 覆盖、解析缓存与运行时解析架构进行了重大重构,修复 2.1.0 / 2.1.1 在部分启动时序下非必现出现的开屏广告与信息流、评论区广告泄漏(Issue #3)。建议所有 2.1.0 / 2.1.1 用户尽快升级到本版本。

启动 / 状态机重构

  • 两层就绪判定:核心过滤可用(开屏 + Feed Hook + getter 完整)与 Feed 覆盖收敛同时满足才进入 READY;覆盖未收敛期间由运行时事件与一次性 8s watchdog 提供有界重扫,20s deadline 兜底收敛,不引入任何周期性轮询。
  • 会话触发合并:解析会话运行期间到来的运行时事件 / watchdog 触发不会丢失,合并为恰好一轮后续会话。
  • READY / DEGRADED 为真正冻结终态,迟到的后台会话无法翻转;终态后释放 DexKit Bridge、Resolver worker、ClassLoader 观察器与 watchdog,仅保留业务 Hook 与被动开屏安全网。

Hook 覆盖增强

  • Feed 层同时 Hook EntityAdHelperEntityListFragment 中全部 (List, boolean) -> List 业务入口(2.0.1 覆盖广度),并按锚点类逐方法确认存活后才判定覆盖收敛。
  • 开屏解析改为 strong / weak / 历史类名反射三层并集,多开屏 Activity(如 SplashActivitySplashAdActivityFullScreenAdActivity)全部解析安装;继承自混淆父类的 onCreate 也可定位。
  • 被动 Instrumentation 开屏安全网进程级常驻,作为最终兜底。
  • 覆盖加固应用(如易盾)在同一 ClassLoader 上分阶段追加 DEX 的时序:失败会话重装观察器并强制 DexKit 有界重扫(最多 4 次重建),使后到的业务 DEX 仍能被发现。

缓存升级(schema 2)

  • 缓存文件迁移为 coolapk_purifier_cache_v4.json(schema 2)。旧版本缓存不迁移、不误用,升级后首次启动自动重新适配一次(可能出现一次开屏,属预期行为),之后恢复毫秒级缓存命中启动。
  • 多目标条目按方法 / 类 descriptor 稳定编号,跨会话合并不丢目标;仅“两锚点完整收敛”的解析结果才允许作为缓存直达 READY 的依据。

稳定性与测试

  • 修复观察器重装竞态、终态后钩子残留、缓存写死循环等缺陷;缓存写入保持原子替换。
  • 新增 / 更新 97 项单元测试全部通过;已在酷安 13.1.1 / 15.9.0 / 16.5.1 实机完成冷启动、覆盖升级与多版本回归验证,各版本首次适配后均进入“缓存直达 READY(毫秒级)→ 解析组件全释放”的低开销稳态。

说明:广告拦截依赖运行时解析与目标应用结构,极端时序下仍存在理论上的延迟覆盖窗口,我们不承诺绝对不出现任何广告泄漏;如遇问题请提交包含酷安版本与 files/coolapk_purifier_bootstrap.log 的问题报告。