Repository navigation
Releases: afwfv/FanqieHook
Release list
FanqieHook v0.8.8
更新内容:
v0.8.8 - 修「偶尔漏出一条广告」
- 广告位过滤(
checkAdAvailable)此前是唯一一条没有 deoptimize 的 hook。用 DexSQL 对
73932 宿主做全量调用图复核后确认:这条方法是主进程里所有广告位可用性的唯一汇聚点 ——
AB 表方法b(String)只被它调用,不带 source 的包装c(String)(日志名
checkAdAvailableWithoutSource)也只是转调checkAdAvailable(position, null),
其余 44 个调用点全部直接打在它上面 - 也就是说:这条 hook 生效时任何位置都拿不到广告,而只要有一个调用点没被 hook 住,它就会
原样拿到真实判定结果。ART 会把这种高频小方法内联进调用方,内联出去的副本不经过 hook,
表现正是「大部分时候拦住了、偶尔漏一条,日志里连一行都没有」。其余闸门(阅读器、TopView、
开屏、听书)一直是deoptimize = true,只有这条当初写成了false - 现在改成
deoptimize = true,与其余闸门一致。拦截范围、拦截名单、日志格式都没变 - 只影响首次安装/升级后的第一次启动(重建 hook 时多做一次 deoptimize)
Built from a2feb53f3a3b2beb02c54fc0d8b2dfe341e56767
FanqieHook v0.8.6
更新内容:
v0.8.6 - 适配番茄小说 7.3.9.32(versionCode 73932)
- 把 73932 加入支持列表。逐条复核后的结论是这个版本不需要改任何拦截逻辑:25 个番茄侧
目标(类 + 方法 + 参数 + 返回类型)全部命中,46 个广告位名在宿主字符串池里零缺失,
广告位总表的 45 个位置常量与 73967 完全一致;搜索页三个 AI 入口、短剧广告总开关与横屏
插入开关的字段反查落点也没变,DexKit 两个接口实现类仍是eg3.a/mb3.f - 登记后 73932 启动不再打
unverified host version警告,拦截行为与 0.8.5 相同 - 顺带核对了 32 条目标在 73967 → 73932 的调动情况:每条目标的调用点数逐条相同,
没有变成死代码的开关(ad 命名空间也没有新增或删除的类) - 真机实测(本机 73932):
hooks installed=32 skipped=1 known-missing=[hongguo-banner-join-revert]、
lost=[](唯一跳过的是红果专属类,番茄侧本来就没有);状态文件里实测拦到
reader_banner / video_reader_ad / creator_ad / splash_ad 以及开屏闸门 canShowScreenAd - 红果免费短剧 7.3.9.32(73932)一并登记:26 条目标(含红果专属 banner 服务)逐条命中、
46 个广告位名零缺失、广告位总表与 73732 完全一致;DexKit 落点跟着改名自动跟上
(广告配置yb3.a→tc3.a、全屏广告g73.f→a83.f),零死 hook - 红果真机实测(本机 73932):
hooks installed=30 skipped=3,跳过的 3 条是搜索页 AI 净化
(红果没有对应界面,属预期缺失),lost=[];实测拦到 creator_ad 与开屏闸门 - 红果这次版本更新新增了一批激励广告类(
IDrawRewardAdService等 23 个新类),
零广告模式下广告位过滤一律返回「无广告」,新位置不用登记也自动拦
Built from 11f9b98f2fe646dd69423694759327adffdb4d36
FanqieHook v0.8.5
更新内容:
v0.8.5 - 适配番茄小说 7.3.9.67(versionCode 73967)
- 界面净化(新增):隐藏搜索页的两个 AI 入口——banner 内入口、搜索框内入口,以及
搜索页 AI 悬浮球。目标方法名是混淆名(73967 上为FanqieSearchActivity#Y1/Z1/q1),
但各自唯一读取一个稳定的 ssconfig 模板字段(entryInBanner/entryInSearchBox/
showFloatButton),因此复用已有的字段反查定位,宿主以后换字母可自动跟上。
纯 UI 显示判断,不触碰权益、会员、内容数据 - 把 73967 加入审计集(
SUPPORTED_VERSION_CODES),该版本启动时的
unverified host versionWARN 变为 INFO。纯日志级别调整,不影响任何 hook。
73967 的核验依据写在FanqieModule的审计注释里:静态复核(两个ExperimentUtil
getter 仍按字段唯一命中、37 个位置名零缺失、实现类仍为eg3.a/mb3.f)
加上真机实测(installed=29 skipped=1、lost=[],且记录到 73732 → 73967
原地升级时字段反查自动由q0跟到s0) - 未纳入的净化项(各自缺干净目标或风险过高):角标红点(
MineRedDotManager只被自身与
hf4.e#run()引用,无可翻转的布尔门控)、搜索词轮播(Compose View,方法多为 void)、
小说推荐位(主内容瀑布流,误 hook 会破坏首页)、会员特权卡(位于权益数据层,
只找 UI 层显示门控,不碰权益 getter)
Built from 9341c6281e202b8afee2766b50aae0c7e79bbc09
FanqieHook v0.8.4
更新内容:
v0.8.4 - 适配番茄小说 7.3.9.67(versionCode 73967)
- 零广告:广告位过滤改为一律拦截。
checkAdAvailable对所有位置都返回「无广告」,
被动广告位、用户主动的激励/金币位、以及宿主以后新增的未知位置全部一并拦掉,
不再需要维护拦截名单 - 代价(重要):用户主动点的「看视频得金币 / 看广告免广告 / 看视频催更 / 听书激励 /
看视频解锁章节」等入口会失效——那里已经无广告可播。发奖仍由服务端校验,
本地拦广告不会让金币或权益白得;少数「看广告解锁内容」型的位,其表现取决于宿主是
等广告回调还是乐观放行 - 73967 静态复核:现有 37 个位置名在该宿主里全部存在、零缺失;AB 表 40 个位置已全覆盖
- 73967 实测:install summary
hooks installed=29 skipped=1、lost=[];
并记录到一次真实升级(73732 → 73967)中横屏插入广告开关自动由q0跟到s0 - 拦截日志按来源分类输出
kind=passive / reward / unnamed,便于回看拦到了什么
Built from b70c0c0475a9b49c46440273ab7e7891cd1eceb0
FanqieHook v0.8.3
更新内容:
v0.8.3 - 适配番茄小说 7.3.9.17(versionCode 73917)
- 解决混淆名跨版本漂移:原本按
ExperimentUtil#q0()硬编码的「横屏插入广告」开关,
在 73917 上被改名s0()Z(原q0改成返回long成了另一个配置),硬编码路径下会静默
失效。改为按它读取的稳定字段landscapeInsertAdEnable反查 getter(ClassResolver 用
DexKit 按「无参 boolean 方法 + 读该字段」查表);enableMultiSeriesFlowAd(系列信息流
总开关)也换成同样的字段反查。字段名是业务名、跨版本不变,以后宿主再改混淆字母不用重新适配 - 修复状态文件丢诊断的 bug:之前超过上限会把整个文件清成一行
... truncated ...,把当次
启动的「unverified host version」WARN 和每个 hook 的跳过原因都冲掉——恰好是宿主升级后
定位问题最需要的那几行。改为保留最近 192 KB(按行边界对齐) - 73917 上 DexKit 自动跟进:广告实现类
lf3.a→eg3.a,全屏广告mb3.f - 真机实测 73917:install summary
hooks installed=29 skipped=1,lost=[](唯一 skip 是
红果专有类,本机未装红果)
Built from 163b892146ea686d5daa35d16062bb1fa74b8463
FanqieHook v0.8.2
更新内容:
v0.8.2 - 适配番茄小说 7.3.7.32(versionCode 73732)、红果免费短剧 7.3.7.32(73732)
- 补拦红果推荐流里的广告位
recommend_video(真机实测该位置会走到广告可用性检查但此前
未分类,属于漏拦) - 把金币 / 奖励类广告位一次性登记齐全(
gold_coin_reward_*、video_gold_coin_reward_*、
listen_coin、video_coin_ad等),这些是"看广告换金币"的用户主动流程,按设计保留,
登记后不会再被当成"待分类"反复上报
Built from 985aab3c7ecabd2cb6f865ed36cdf98a5ad4354f
FanqieHook v0.8.1
更新内容:
v0.8.1 - 适配番茄小说 7.3.7.32(versionCode 73732)、7.3.7.18(73718)
- 番茄更新后不再需要重新适配:以前版本号不在支持列表里就一条 hook 都不装,番茄一升级
模块就变成"装了但完全没效果",必须等适配。现在改成逐条安装:某条规则的目标没了,只跳过
那一条并在日志里记下来,其余照常生效——升级最多是少几条效果,不会整体失效 - 新增支持 7.3.7.18(73718):此前这个版本会被版本校验直接拒绝,模块加载后一个 hook 也不装,
表现就是"装了但完全没效果" - 新增两种排查渠道:logcat(
adb logcat -s FanqieHook)与宿主 cache 目录下的
fanqiehook.log状态文件。部分 LSPosed 版本不写模块日志、部分设备还关闭了 logcat,
有状态文件时仍能确认模块是否生效:
adb shell su -c 'cat /data/data/com.dragon.read/cache/fanqiehook.log' - 安装结果会汇总成一行
install summary: hooks installed=N skipped=M,没装上的会列出名字,
反馈问题时带上这一行就能定位 - 模块名从「番茄 红果 版本7.3.7.32去广告」改为「番茄 红果 去广告」,不再把版本号写进名字
Built from ad57667fb906854d6c83d9a929ccb8dbdf1546fb
FanqieHook v0.8.0
更新内容:
v0.8.0 - 适配番茄小说 7.3.7.32(versionCode 73732)
- 红果免费短剧 7.3.7.32(73732)同基线适配
- 激励视频:不提供「秒领」——番茄的发奖由服务端校验,客户端做不到;看满时长正常发奖
Built from 4871526780486ff2479aab236d9d6954024715d9
FanqieHook v0.7.1
更新内容:
v0.7.1 - 适配番茄小说 7.3.7.32(versionCode 73732)
- 移除实验性的「激励秒领」:真机实测无效(金币不增加),激励视频恢复为正常观看
- 修复广告关闭回调传空参数会抛异常的问题
Built from 6861ab2ef612163d9e3a5123bfc31942d661ef90
FanqieHook v0.7.0
更新内容:
v0.7.0 - 适配番茄小说 7.3.7.32(versionCode 73732)
- 尝试新增「激励秒领」(默认开启);该功能经真机实测无效,已在 0.7.1 撤回
Built from 4f2682b0c195b2e299a90caddce9dc543a602282