# 变更记录

| 版本 | 摘要 |
|---|---|
| 1.2.6 | 模块内管理器更新提示：module.prop 增加 updateJson，仓库根目录增加 update.json（version/versionCode/zipUrl/changelog）；新增 update.json 一致性 CI 校验 |
| 1.2.5 | Android 16 / 6.12 等锁定 kallsyms 的设备：`susfs_insmod` 遇到 `kptr_restrict` 全零地址拒绝加载时，回退 `ksud insmod` 走 KernelSU `KSU_IOCTL_LOOKUP_SYMBOLS` 内核侧符号解析（含 SHN_ABS 重写）；针对 1.2.3/1.2.4 在该类设备上 LKM 加载失败（rc=13），待设备验证 |
| 1.2.4 | SUSFS LKM 升级上游 r18.9（#167/#184/#192/#197）；WebUI 状态读取加 KernelPatch 探测缓存；审计遗留修复 F7/F8/F9/F10/F11/F12/F13（配置校验、完整性缓存 ctime、allow_lkm 备份、set_bundle 回滚、import 原子写入、并发状态、check_zip 排序）；文档/元数据同步 r18.9 与 v1.5.2+_R28 |
| 1.2.3 | 审计修复：WebUI rc=5 部分成功提示、builtin SUSFS 不再显示为 LKM、连续失败暂停被 clear_boot_guard 清除、APatch 残留 package_config 误判、RELEASE_NOTES 补 NeoZygisk /data/adb 风险；APatch 实验性支持：状态页新增 APatch/KernelPatch 卡片（用户态/KernelPatch 内核/共存模式/LKM 放行 + 显式放行开关，默认仍不外挂）；新增 KernelPatch 内核运行时探测（dmesg banner，不可读返回 unknown）；KMI 自动消歧：无 tag 的 5.15 按 SDK 区分 android13/14-5.15（仅已打包 ko 存在时采用）；QEMU 模块级 APatch 路径 14/14 + KSU 冷/热启动回归；APatch 真机仍未验收 |
| 1.2.2 | 英文界面：默认跟随系统语言，可在关于页切换（235 条文案含开关说明、确认弹窗、错误提示与动态状态行；新增 tools/test_i18n.sh 校验文案覆盖与英文片段拼接空格）；Magisk 兼容：新增 service.sh（Magisk 无 boot-completed，规则改在 late_start 应用，KernelSU/APatch 跳过），安装脚本放行 Magisk，且应用成功才清除开机守卫标记，安装脚本为 service.sh 设可执行位；修复关于页 LKM 版本号写死 r18.6（实际 r18.8）；module.prop 描述补上 Magisk；APatch 安装识别（APATCH/KERNELPATCH 判断先于 MAGISK_VER_CODE，避免误标）、关于页与失败描述按管理器区分（未实机验证）；支持内核内置 SUSFS：新增 susfs_kernel 探测（LKM 标记 / ksu_susfs 握手判定 builtin），apply/load/action/ctl 全链路改用它，安装时增加 CONFIG_MODULES/KALLSYMS/KPROBES/模块签名预检；审计修复：Action 失败不再假成功/不清守卫，helper 内部变量改名避免覆盖调用方（修 hide_dex2oat 算术崩溃与 Scene 路径错误），ctl 手动加载成功后清守卫，loading 残留返回 3，load rc=2 不再被误标；审计 P2：规则失败统计与描述、进程优先 root_family、_cf 校验缓存、注释符仅行首/空白后识别、锁接管写 boot_id、del 回读校验、连续失败 3 次暂停自动加载；APatch/KernelPatch 共存模式：检测到 kpimg 时自动关闭 avc_spoof（SELinux hook 重叠），status 增加 kernelpatch/coexist_mode；APatch 防护：默认不外挂 LKM（ctl.sh allow_lkm 放行）、ramoops 崩溃自停、modules_disabled/SIG_FORCE 预检、crash_report；二轮审计修复：pstore 门禁 exit 3 不再误清守卫、判据收紧+crash_ack、kernelpatch 强特征判定、预检空配置不误杀、allow_lkm 纳入升级白名单、手动路径也拦截；外部 review 适配：builtin 判定收紧（握手+版本/特性+/proc 节点）、部分失败 rc=5、status 分离 apatch_userland/kernelpatch_kernel、安装内置 SUSFS 提示；backend_probe（内核/KSU 配置/特性/工具协议一次性探测）、内置无 KSU 警告、kernel_config_get 临时文件读取；状态模型（apply_result / boot_stage_completed / abi_match / effect_verified / crash_evidence / kernelpatch_runtime）与配置三态（y/m/n/absent/unknown） |
| 1.2.1 | LKM 升级到 v2.3.0-r18.8：修复卸载时 compat syscall 表未恢复导致的 32 位 wrapper 递归、RCU stall 与重启（上游 #169），恢复 create-family 层（#170），hide_syms 回到 kprobe 路径修 6.18 BTI Oops（#141）；此前 r18.6 的 #159 bootloop 修复、#150 loader 修复、前缀表 64、/proc/susfs_map 一并包含；config/sus_mount.txt 改为写入 /proc/susfs_hide_mounts 前缀表（上游 add_sus_mount 已 deprecated），旧 LKM 才回退逐条注册，replace_rules=1 会撤销本模块加过的前缀；新增 config/sus_map.txt，通过 /proc/susfs_map 隐藏进程 maps 里的真实文件路径；DEX2OAT 隐藏同样迁移到前缀表 |
| 1.2.0 | 配置改为 `config.ini` 纯数据格式（不再 `source`，消除命令注入/环境劫持/路径覆盖整类风险），旧 `config.sh` 在安装期与运行时自动迁移并保留 `.bak`；WebUI 保存合并为一次 `set_bundle`（config + 5 个规则文件一次提交，校验失败整体不落盘）；`sus_mount` / `try_umount` 按 `boot_id` 记账去重（内核无查询接口，失败不记账、下次重试）；状态页新增「手动确认 BL 已解锁」开关（写独立 `state/force_bl_unlocked`，首次开启需等待 10 秒确认），修复伪回锁设备 sepolicy/VOLD 隔离被误判跳过；`ctl.sh` 固定模块路径，不再接受环境传入的 `MODDIR`/`CONFIG`/`STATE`；配置校验拒绝保留键与重复键，通用写入命令无法改写 BL 标记；关于页贡献者卡片增加滚动触发动效；新增 `ctl.sh caps`（能力查询）与 `ctl.sh compat`（兼容性检查）；Scene 隐藏改为按内容特征重扫（apply 内三轮重试 + `ctl.sh rescan_scene` + WebUI「重扫 Scene」按钮）；预设不再收录随机命名的 Scene 目录；修复 `rescan_scene` / `guard_status` 退出码非零导致 WebUI 把成功误报为失败；修复「重扫 Scene」按钮排版；新增「自动 try_umount（模块挂载）」与「跳过系统正常挂载」；开机只执行一次 apply（去掉 45 秒后的补跑）；能力判定改为只读特性位并在实测失败后降级；自动 try_umount 默认关闭且强制过滤真实分区并记录清单；跳过隐藏列表改为 config/skip_hide.txt 可配置；不再改写管理器目录下的 ksu_susfs；sus_path 清理改为只移除本模块上次写入的规则（`replace_rules=1`），整表清空需显式设 `2`，不再默认清掉其他隐藏模块的规则；选择 KMI 改用真实内核（`/proc/version` / `real_uname.txt`），避免 uname 伪装导致选错 `.ko`；移除「强制隐藏 LSPosed」及其 ksud 全局挂载登记（会越界影响其他模块的挂载）；运行时能力探测与 `ctl.sh diag`；管理器 `ksu_susfs` 无法执行时回退到模块备份（不写盘）；非绝对路径与失败探测不再刷日志；安装保留配置 + 配置自愈；apply 加互斥锁与 10 分钟残留自愈 |
| 1.1.9 | 启动守卫（防重启循环，覆盖 late-load）；BL 解锁检测与 `bootloader=` 状态；仅解锁可用的 sepolicy / VOLD 隔离（未解锁时整组隐藏）；隐藏 GAPPS / DEX2OAT / Scene 痕迹；预设隐藏项弹窗；`kmiinfo` 与工具链修正；BakaSU 识别（与 ReSukiSU 包名相同，显示组合名 + `manager_name` 覆盖）；清理死代码（`read_entries`、重复快照调用、未用样式），开机门禁合并为 `boot_gate_ok` |
| 1.1.8 | 内核诊断 `kmiinfo`；强制 KMI 下拉；匹配失败仍可安装；uname 伪装与自动还原、开机真实内核快照；加载失败自动弹窗；修注释行被当规则下发、描述写入转义、`force_kmi` 白名单、配置内容校验 |
| 1.1.7 | 新增 5 个隐藏开关（KSU LOOP / REVANCED / 自定义 ROM / COMPAT MATRIX / CMDLINE）；修复热重启后 hide_modules 丢失；内核特性门控；构建增加 JS 语法检查 |
| 1.1.6 | 第三方声明补充 SUSFS 原始作者 simonpunk；构建可复现（固定时间戳） |
| 1.1.5 | 显示名改为 LKM SUSFS管理器；移除 WebUI 页头图标 |
| 1.1.4 | 修复 1.1.3 的 CRLF 缺陷；构建期 CR 门禁 |
| 1.1.2 | 开源协议合规：AGPL 全文、NOTICE、provenance 扩展 |
| 1.1.1 | 启动加固：load.sh 超时、半加载保护 |
| 1.1.0 | 首个整合版本 |