面向天学网 Android 客户端(com.up366.mobile)的 LSPosed 运行时模块:在目标 App 进程内做只读观察
(桥调用、WebView 页面、网络、题包解析、答案索引),并通过注入到目标进程的只读面板查看结果。
在只读能力之上,模块还提供默认关闭的可选自动化(一键填答、听力快进并交卷、速度档位)。
- 模块包名:
io.github.adkimsm.up366.hook - 源码与问题反馈:https://github.com/Adkimsm/up366-hook
- 目标 App:天学网
com.up366.mobile(arm64-v8a,Android 8.0+)
仅供学习与研究使用,严禁商用。本项目不修改、不重分发天学网 APK。
| 能力 | 说明 | 默认 |
|---|---|---|
| Activity / 进程观察 | Hook Instrumentation#callActivityOnCreate、Application#onCreate |
开 |
| 注入式只读面板 | 悬浮按钮 + 面板(DecorView 兄弟 View),状态 / 开关 / 答案 / 维护 / 诊断 / 日志 / 开发者工具 | 开 |
| WebView 与 JS 桥观察 | 页面加载、addJavascriptInterface、桥调用与同步/异步结果关联、原生→页面音频回调 |
关 |
| 只读 WebView 探针 | file:// 页面 DOM 结构、真实组件选择器、渲染完成重试、iframe |
关 |
| 网络观察 | OkHttp 动态代理拦截,记录请求/响应元数据与截断正文 | 关 |
| 题包解析(只读) | questionData.js、组合大题递归展开、音频资源映射 |
关 |
| 本地答案索引(只读) | 解析 answer_text 建 SQLite 索引(目标 App 私有目录),面板显示当前套题答案 |
关 |
| 开发者工具(只读) | 对当前页面执行 DOM 概要 / 计算样式 / 门控概览;原生音频回调列表 | 面板内按钮 |
| 一键填答 | 用本地答案索引在答题层点击选项(程序化点击绕过页面 CSS 禁用) | 关 |
| 听力快进并交卷 | 加速播放 + 压缩页面等待 + 重试「听完」回调,全部解锁后自动提交 | 关 |
| 速度档位 | 关闭 / 标准 / 快速 / 极限,统一控制播放倍速、页面时钟倍速、等待压缩与重试间隔 | 快速 |
- 安装 LSPosed,下载本仓库最新 release 里的 APK 并安装;
- 在 LSPosed 中启用模块,作用域只勾选
com.up366.mobile(模块已声明静态作用域); - 重启天学网客户端。
- 打开天学网,DecorView 上会出现悬浮「答」按钮(可拖动、位置持久化);点按展开只读面板。
- 在「功能开关」里按需开启:网络、WebView、桥、探针、题包解析、本地答案索引。
- 「开发者工具」对当前页面执行 DOM 概要 / 计算样式 / 门控概览(只读,不点击、不改 DOM)。
- 自动化(需先在「功能开关」打开对应开关):
- 「一键填答」:按本地答案索引在答题层点击选项;
- 「快进听音并交卷」:加速听音、压缩页面等待并自动交卷;
- 「速度档:…」:切换速度档位(关闭 / 标准 / 快速 / 极限)。
日志默认输出 Logcat,标签 UP366-P0。可在面板开启「结构化日志写入私有目录」,把同样已脱敏的 NDJSON 事件写入目标 App 私有目录 files/up366/logs/。
- 模块代码只运行在
com.up366.mobile进程内,不声明exported组件,不监听外部广播,不提供 IPC。 - 答案、题干与凭据不写入默认 Logcat;
uId/clientId等标识使用不可逆短哈希,Cookie/Token 等字段默认脱敏。 - 面板与开发者工具中的页面结构、题干与选项只存在于目标进程内,不落盘、不写 Logcat。
- 可选的文件日志与原始载荷仅写目标 App 私有目录,清除天学网数据会一并清除。
本项目以 GNU General Public License v3.0(GPL-3.0) 发布,完整条款见源码仓库的 LICENSE。