FriendlySchool

校园/常用 App 净化 · 去广告 · 灭活后台采集

Powered by LSPosed License Min SDK Android libxposed API

Release Downloads Telegram Channel


简介

FriendlySchool 对下面几个 App 做客户端侧净化:拦掉广告与后台采集的出口、收起营销入口, 同时保留刷卡、充值、余额、付款码这些真实业务。

做法上以拦出口为主:被拦的广告接口返回「该广告位已关闭」这类成功空响应,让 App 走它自己既有的正常分支, 而不是把请求打断、把状态机掐死。

安装:下载 APK → 装好 APK → 在 LSPosed 里启用本模块 → 重启目标 App(目标已在模块里声明,通常无需手动挑选)。

兼容与版本

  • Android 8.0(API 26)及以上;使用支持 libxposed API 102 的 LSPosed 框架。
  • 模块包名:io.github.shitianyaa.friendlyschool;当前版本:2.4.0(versionCode 11)。
  • 版本变更见 更新日志。
  • 仅 LSPosed 入口:不提供桌面入口,请在 LSPosed 管理器中启用并管理模块。
  • 旧包名 com.yiran.friendlyschool 与本包可并存。迁移时先停用旧模块,再启用本模块并重启目标 App,避免重复 Hook。

兼容范围覆盖以下目标版本;其他版本尚未确认:

应用 已分析 / 验证的版本
易校园 7.8.7
WakeUp 课程表 6.5.0–6.6.0(versionCode 540–550)
JMComic3 2.1.11
光影边框 3.4.5(versionCode 34500)
酷安 16.6.4(versionCode 2609291)
人民日报 7.4.3.1–7.4.3.2(versionCode 7431–7432)

目标 App 更新建议(2026-10-24):易校园与 WakeUp 课程表非必要不更新——这两个目标的每次版本更新都会新增/更换广告 SDK 并重排混淆(易校园 7.8.7 新增 ZJ 广告 SDK 全套广告组件、WakeUp 6.6.0 混淆重排导致部分拦截失效),模块需要跟随适配。停留在已验证版本(易校园 7.8.7、WakeUp 6.5.0–6.6.0)净化效果最稳。

作者已在以下设备自测正常:

设备 系统 结果
一加 12 Android 16 正常
红米 Turbo 3 Android 17 正常

✨ 支持的应用

易校园 · cn.com.yunma.school.app

它自带的链路比较重:内置 2.2 MB 的 ELF curl 释放链与透明命令 Activity、广告 SDK 内嵌的 shell 工具、 面向 220 款应用的扫描名单(结果回传第三方域名)、剪贴板抓取,以及 15+ 家广告 SDK。模块的处理:

  • 开屏直达:开屏页起来后直接走官方跳转,不再等广告回调;
  • 广告全链路拦截:广告中枢与各广告 SDK 的加载/展示全断(开屏、插播、Banner、信息流、营销弹窗、公告位);
  • 后台采集与命令执行拦断:应用列表扫描、剪贴板抓取、Mob 采集、快手探测,以及 curl / Shell / 命令 Activity;
  • 界面精简:首页「课程表」入口与「今日课表」卡片、我的页签到/积分/礼包卡片隐藏;消息中心只留一卡通类通知。

WakeUp 课程表 · com.suda.yzune.wakeupschedule

  • 去广告:开屏、插播、商城位、首页 banner 与弹窗全部关闭;
  • 关掉付费链路:卖课 / 会员 / 收银台入口与会员专区全部拦断;
  • 免登录:不弹登录页、不显示登录卡片(代价见下);
  • 界面精简:底栏裁到「日程︱课表」、清除顶栏礼包图标与浮窗商城、隐藏「普通提醒」行;
  • 免登录也能解锁外观功能:不登录账号时夜间 / 简洁模式照常来回切换并在重启后保持,皮肤预览返回不再卡住——做法是本地放行会员判断,服务端账号字段一律不修改;

JMComic3 · com.a7m3p9xv.t6qk2z8.app

(禁漫,成人内容站点客户端)

  • WebView 层去广告:清空广告缓存的读写两侧并拦掉广告接口,所有广告位无事可做;
  • 免广告分支(除「我的」页外):让 App 走它自己的「免广告会员」分支 —— 跳过纯广告封面,并让 2.1.10 新增的「补签」不再要求看满广告(点补签直接进入选日期)。只改 ad_free 这一个显示标志,余额/到期/等级等其它字段保持服务端原值;「我的」页不伪造,会员卡显示真实等级;
  • 自动每日签到:用你自己的账号调官方接口签到,结果会在 App 内弹一条提示(AUTO_CHECK_IN 可关)。

光影边框 · com.dengziwl.bk

(Flutter 应用,图片边框 / 水印编辑)

  • 去广告:会员 / 广告开关全部收敛在一个本地设置键上,模块把它固定为「已开通」——开屏广告、导出页原生广告等 29+ 处广告位一处断开;
  • 拔掉一条远程代码下发通道:该应用集成的某个广告 SDK 会用明文 HTTP 从裸 IP 拉配置与 AES 加密的 dex 并反射加载,且无任何完整性校验;模块直接拦断该配置请求(异步上报,不阻塞主流程);

边界:应用内「开通会员」入口的文案读的是服务端返回的会员对象(经 Dart 原生网络层),模块只能改本地设置、改不了这处显示,所以该入口仍会显示原样(不影响去广告效果)。

酷安 · com.coolapk.market

  • 信息流与回复列表去广告:在列表处理前后过滤 sponsor 广告卡片,保留普通帖子与回复;
  • 开屏去广告:两条展示路径都覆盖 —— 独立开屏页(含第三方 SDK 的开屏页)起后立即结束;嵌在主界面内的开屏 Fragment 走宿主原生的结束通道收尾,不留白、不卡顿。

人民日报 · com.peopledailychina.activity

  • 开屏秒开直达:跳过开屏广告的加载与倒计时,启动后直接进入首页,导航栏与首页内容正常加载;
  • 信息流去广告:信息流与各频道的商业推广卡片(长图、冠名卡、视频展播等)全部过滤,列表不留空白占位;
  • 首页自动签到:每天进入首页后自动完成积分签到,成功给一次轻提示;未登录不执行,同一天不重复签,失败会自动重试,换账号后按账号分别记录。

⚠️ 已知边界

  • 目标 App 升级后可能失效:升级会改类名/方法名,这是所有 Xposed 模块的共同宿命;日志里会明确写出「找不到」的行。
  • 会移除部分非广告入口:易校园的首页「课程表」入口、「今日课表」卡片与我的页三大积分卡片;WakeUp 的「我的」整页、三个底栏标签与「普通提醒」行。
  • WakeUp 免登录的代价:课表只存本机 —— 云同步不可用,卸载 / 清数据 / 换设备会丢失(学校教务系统的导入页不受影响)。
  • WakeUp 外观设置跟设备不跟账号:夜间 / 简洁模式存放在当前安装的应用数据里(模块自有键),不随账号切换;新键不存在时按当前账号的原值初始化,之后以本地值为准;清除应用数据或卸载后该设置丢失。
  • WakeUp 付费皮肤未验证:皮肤样式数据与权限仍由服务端下发,本地放行 ≠ 服务端给数据,未购买皮肤的实际行为尚未确认。
  • 易校园拦 shell 的副作用:App 自带的网速探测会失败;易校园自己的设备指纹持久化不在本模块范围内。
  • JMComic3 会以你自己的账号发少量请求:签到(读日历 →[未签则]提交 → 回读校验;服务端「写后读」有延迟时最多再重读 5 次,故约 3~8 个请求)与一次有界的启动期状态采样(每 3 秒一次、最多 100 次,约 5 分钟后自停)。
  • JMComic3 冷启动首页空白会自愈:约一半概率冷启动后首页空白(App 自身在广告被清空后的竞态)。模块检测到该状态会让页面自动重载一次(sessionStorage.state 跨重载存活,直接进首页);命中时你会看到约 1~2 秒的刷新。
  • 有被服务端风控识别的可能:改客户端行为总有这个风险,请自行评估。

⚖️ 免责声明

FriendlySchool 仅供 Android、LSPosed 相关技术研究、学习交流及个人设备使用。

本项目通过运行时 Hook 调整第三方应用的客户端行为,与相关应用、开发者、运营方及服务提供商不存在任何隶属、合作或官方关联关系。项目中提及的应用名称、商标及其他相关权利均归其各自权利人所有。

使用者应自行确认其使用行为符合所在地法律法规、第三方应用的用户协议及服务条款,并自行承担因应用升级、兼容性变化、账号限制、数据异常或其他原因产生的风险。

请勿将本项目用于违法、侵权、商业牟利或其他损害第三方合法权益的用途,并请尊重原应用开发者的劳动成果与正版服务。

💬 反馈与交流

  • Telegram 频道:欢迎加入 FriendlySchool Release 频道 交流玩耍,获取第一手更新与发布资讯!
  • 问题反馈:如果在日常使用中遇到 Bug 或异常,欢迎提交 Issue;
  • 新应用适配:如果有想要支持或净化的校园 / 常用 App,非常欢迎提交 Issue 并附上应用名称、版本及相关功能诉求!

🙏 致谢

感谢 yylsping/coolapk-purifier。FriendlySchool 的酷安内嵌开屏广告处理参考了该项目 SplashEmbeddedHooks / SplashEmbeddedDispatch 的设计思路,包括在 Fragment 生命周期完成后复用宿主原生结束通道,以及按 Fragment 实例避免重复投递结束信号。

源码与构建

源码与构建方法见 shitianyaa/FriendlySchool。本仓库提供模块介绍与 APK Release。

📜 许可证

本项目采用 MIT。

module/lib/api-102.jar 是 libxposed API 的编译桩,采用 Apache-2.0,来源与哈希见 依赖说明。它只用于编译期打桩,不会进入产物 dex。

Releases

2.4.0

Stable

10/30/2026, 2:24:17 AM

2.4.0(2026-10-27)

versionCode:11。

新增

  • 人民日报:新增第六目标(com.peopledailychina.activity · 7.4.3.1)。
    • 开屏秒开直达:跳过开屏广告的加载与倒计时,启动后直接进入首页,导航栏与首页内容正常加载。
    • 信息流与频道去广告:信息流与各频道的商业推广卡片(长图、冠名卡、视频展播等)全部过滤,列表不留空白占位。
    • 首页自动签到:每天进入首页后自动完成积分签到,成功给一次轻提示;未登录不执行,同一天不重复签,失败会自动重试,换账号后按账号分别记录。
    • 日志不再静默:该 App 加固后会吞掉普通级别日志,本目标单独保证功能安装/失效状态可见,便于排查。
    • 兼容加固保护:适配该 App 的加固加载时序,功能在加固环境下正常工作。

Assets

1

2.3.4

Stable

10/24/2026, 10:50:17 AM

2.3.4(2026-10-24)

versionCode:10。

修复

  • WakeUp 课程表:适配 6.6.0(versionCode 550)。6.6.0 的 R8 把混淆名整体重排(类名大体存活但方法名「同名换人」),按混淆名挂钩的底部标签裁剪、顶栏图标、底层任务三组 hook 失效(表现:底部「学习/表助手/我的」标签回来了、顶栏礼包图标回来了)。改为按稳定锚点动态发现,锚点不随混淆重排变化:
    • 底部标签裁剪:adapter 双名回退(6.6.0 o0OO00Oo.OooOOO0,6.5.0 o0O0OOoo.OooOOO),按构造器 List 参数过滤的机制不变;
    • 顶栏图标(简洁模式「我的」人形图标 + 顶栏礼包图标):改走资源 id(R8 不重排 arsc 资源名,scheduleMine/scheduleIcon 两版本实测都在)+ ScheduleFragment 生命周期收口(onCreateView / onViewCreated / onResume 三点重隐)+ oo0O 访问器兜底(返回视图须与 scheduleMine 资源 id 核验一致才隐藏——该混淆名在 6.5.0/6.6.0 已分别指向不同视图,不核验会误藏功能按钮);礼包加载器按签名 (HomeSourceBanner, String)→void 动态发现并 no-op(不 no-op 它,服务端 banner 到达时会把图标翻回 VISIBLE);
    • 底层任务(广告SDK / 广告配置 / OAID / 设备指纹 / 埋点 / 远程与内部日志 / 支付 / 推送 / DProtect 共 10 项):不再按混淆类名挂钩,改为挂 launchmanager 基类 Task 构造器、按任务名字符串黑名单(App 自有语义,R8 不动字符串常量)动态 no-op 命中任务的 run()。
    • 双版本兼容:以上机制在 6.5.0(versionCode 540)与 6.6.0(550)上均可工作;每条 hook 装不上都有 FAILED 日志,冷启动一次即可定位。
  • 易校园:新增 ZJ 广告 SDK 守卫。7.8.7 的 ZJ SDK 首次在 manifest 挂出全套广告组件(插屏/激励/开屏/H5/摇一摇/下载弹窗/反馈页 + 下载服务),其代码在运行时解密的插件 jar 里、静态不可见。守卫按运行时类名前缀 com.zj. 拦截(Activity onCreate 后 finish、Service onCreate 后 stopSelf、onStartCommand 跳过),不提前加载任何 ZJ 类,对 SDK 后续加组件免疫;每次命中打日志报具体类名。不拦插件加载(避免破坏宿主状态机)。

使用建议

  • 易校园与 WakeUp 课程表非必要不更新:这两个目标的每次版本更新都会新增/更换广告 SDK 并重排混淆(本次易校园 7.8.7 新增 ZJ 广告 SDK 全套广告组件、WakeUp 6.6.0 混淆重排曾致部分拦截失效),模块需要跟随适配。停留在已验证组合(易校园 7.8.7(含 ZJ 守卫)、WakeUp 6.5.0–6.6.0)净化效果最稳。

Assets

1

2.3.3

Stable

10/8/2026, 6:17:19 AM

FriendlySchool 2.3.3 发布。

针对 JMComic3(禁漫)做三项修复:两处自动签到的健壮性问题,以及一处冷启动首页空白。

自动签到

  • 回读校验改有界重试:服务端签到存在「写后读」传播延迟(实测端到端约 13 秒)。daily_chk 已回成功,1 秒后回读 /daily 却仍读不到 signed:true,原先只回读一次就误报 VERIFY_FAIL、弹「自动签到失败」。现改为最多回读 5 次、每次间隔 4 秒,任一读到即通过;只重读、不重发签到。
  • 排队弹窗增加持久化:签到提示弹窗需等 App 「同意18岁」置位后才弹;实测存在只活 4 秒就死亡的进程,导致弹窗静默丢失。现将待弹内容落盘,下次冷启动同一天补弹一次后清除,跨天丢弃。

冷启动首页空白自愈

约一半概率冷启动后首页只有底栏、内容区空白(无标题头),需手动切到其它底栏页再回首页才恢复。根因是 App 自身在广告被清空后的竞态(首页 coverOpen 从 5 到 6 依赖一段已被清空的广告封面)。现用 MutationObserver(事件驱动、非轮询、平时零开销)检测该卡死态,命中即让页面自动重载一次 —— sessionStorage.state 跨重载存活,故直接进入首页、不重走选线路 / 同意18岁。

其余四个目标(易校园 7.7.8、WakeUp 课程表 6.5.0、光影边框 3.4.5、酷安 16.6.4)行为不变;JMComic3 已分析版本更新至 2.1.11。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.3.3(versionCode 9)
SHA-256:9ae61010564dfd8ab454dbeb94a5c2e057681caa2574a46a2478e832ba022427

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1

2.3.2

Stable

10/7/2026, 6:59:16 AM

FriendlySchool 2.3.2 发布。

适配 JMComic3 2.1.10,并修复其新增「补签」在模块下卡死的问题。

2.1.10 给补签加了一道「看满 5 秒广告才能关」的闸门,仅非会员触发;而模块此前只在开屏封面阶段伪造「免广告会员」标志(封面走完即回真实值),于是签到页读到真实的 ad_free:false、弹出该闸门,而广告又已被模块清空导致闸门永不放行 —— 表现为补签卡住。

  • 现将伪造窗口改为「除「我的」页(/member)外一律伪造」:签到页据此直接跳过补签的广告闸门,点补签即可进入选日期;「我的」页不伪造,会员卡仍显示真实等级。
  • 只改 ad_free 这一个显示标志,余额 / 到期 / 等级等其它字段保持服务端原值。

其余四个目标(易校园 7.7.8、WakeUp 课程表 6.5.0、光影边框 3.4.5、酷安 16.6.4)行为不变。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.3.2(versionCode 8)
SHA-256:2ca0fbdec6c518bedf54e304ad53b227f104dbe6f27eab0975ff5b11ff016152

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1

2.3.1

Stable

10/6/2026, 3:18:53 PM

FriendlySchool 2.3.1 发布。

修复酷安开屏广告未净化:此前只结束独立开屏页,而冷启动多数走「内嵌在主界面内的开屏 Fragment」这条路径,仍会看到开屏广告。

  • 现在让该 Fragment 正常走完生命周期后,投递宿主自己的结束信号(与倒计时结束 / 跳过按钮同通道同载荷),由宿主自行清理与续接;并按 Fragment 实例去重,避免重复投递。

其余四个目标(易校园 7.7.8、WakeUp 课程表 6.5.0、JMComic3 2.1.9、光影边框 3.4.5)行为不变。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.3.1(versionCode 7)
SHA-256:292c026a03fbd8d9c0d7fe98493edd53836dd88a32b4e1f2d2eaa59703ef8b58

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1

2.3

Stable

10/6/2026, 7:00:45 AM

FriendlySchool 2.3 发布。

新增目标应用:酷安(com.coolapk.market,16.6.4)去广告。

  • 信息流与回复列表:在列表处理前后过滤 sponsor 广告卡片,保留普通帖子与回复。
  • 开屏:开屏广告页(含第三方 SDK 的开屏页)起后立即结束,直接进入主界面,不再停留等广告回调。

既有四个目标(易校园 7.7.8、WakeUp 课程表 6.5.0、JMComic3 2.1.9、光影边框 3.4.5)行为不变。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.3(versionCode 6)
SHA-256:2f4783f2ffc42683213f05f2f056ad0b51cd7f0467020bda1dfead2b5409490e

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1

2.2

Stable

10/4/2026, 8:10:58 AM

FriendlySchool 2.2 发布。

新增第四个目标应用:光影边框(com.dengziwl.bk,3.4.5)去广告。

  • 会员 / 广告开关全部收敛在一个本地设置键上,模块把它固定为「已开通」——开屏广告、导出页原生广告等 29+ 处广告位一处断开。
  • 拦断该应用集成的一个广告 SDK 的配置请求:它用明文 HTTP 从裸 IP 拉配置与 AES 加密的 dex 并反射加载,且无任何完整性校验(异步上报,不阻塞主流程)。

既有三个目标(易校园 7.7.8、WakeUp 课程表 6.5.0、JMComic3 2.1.9)行为不变。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.2(versionCode 5)
SHA-256:15f96fc4f234ffee14f1d626877ab3fdbb66a7e11c0303df71cd9d59d9e7d9a8

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1

2.1.1

Stable

10/2/2026, 2:05:11 AM

FriendlySchool 2.1.1(versionCode 4)。

  • WakeUp 免登录时可切换并保存夜间 / 简洁模式并使用会员主题,重启后保持;首次读取迁移原账号设置,已有本地值优先。
  • 修复夜间模式无法切回日间、皮肤预览返回被会员提示拦住及首次迁移的类型转换错误。
  • 外观 Hook 成组安装,失败时撤销已安装部分;偏好获取与读写失败记录告警。
  • 新增猫耳少女自适应图标;文档统一中文并新增更新日志。

安装 APK 后,在支持 libxposed API 102 的 LSPosed 中启用并重启目标 App。模块仅提供 LSPosed 入口,不显示桌面入口。

边界:夜间 / 简洁设置保存在 WakeUp 应用数据内,不随账号切换,清数据或卸载后丢失。外观放行只改变本地判断,付费皮肤的数据与权限仍由服务端决定。

验证:78 项桌面断言通过;三个目标 App 已完成真机 Hook 回归,用户确认皮肤预览返回及图标显示正常。桌面测试不替代真实持久化与界面验证。

包名:io.github.shitianyaa.friendlyschool
SHA-256:11c1d2c7deb487abd78fd83db708c9134e83c48f4ec963da36f89d50adbc5e86

源码提交 · 更新日志

Assets

1

2.1

Stable

10/1/2026, 3:44:49 PM

FriendlySchool 2.1 首次公开发布。

  • 支持易校园 7.7.8、WakeUp 课程表 6.5.0、JMComic3 2.1.9:去广告、拦截后台采集、精简营销入口。
  • 修正易校园资源读取与命令执行拦截的异常传递,避免框架保护模式放行。
  • 作者已在一加 12(Android 16)、红米 Turbo 3(Android 17)验证正常;自动回归中三个目标 Hook 无丢失,62 项桌面断言通过。

安装:下载 APK,在支持 libxposed API 102 的 LSPosed 中启用,再重启目标 App。若装有旧包名 com.yiran.friendlyschool 的模块,请先停用旧模块,避免重复 Hook。

包名:io.github.shitianyaa.friendlyschool
版本:2.1(versionCode 3)
SHA-256:ac59f24e9bc135f56de408d20e662f95de4c995e7de562cb0bde186a3c2437ba

源码与已知边界:https://github.com/shitianyaa/FriendlySchool

Assets

1