Skip to content

1.3.0 - 彻底移除 IOHID 监听(未生效且引发启动黑屏)

Choose a tag to compare

@CangWeiohh CangWeiohh released this 10 Oct 02:11
· 9 commits to main since this release

1.3.0:彻底移除 IOHID 监听(它从未生效,并且 1.2.9 的探测把启动黑屏带回来了)

先说结论

1.2.9 的 IOHID 相关新增是这次黑屏的嫌疑源头,因此 1.3.0 把整个 IOHID 观察器从发布构建里彻底删除。

理由很直接:它从来没有真正生效过 —— 1.2.8 第一次给它加计数后,实测是"零事件"。一个从未生效的功能,不值得拿设备启动去冒险。

1.2.9 相对 1.2.8 只多了这些(都在 imagent 里、启动后 10 秒执行):

  • IOHIDEventSystemClientCopyServices 探测"能看见多少 HID 服务";
  • 同时创建 3 个 客户端(主 run loop / dispatch queue / 独立线程 run loop);
  • 新增一个独立线程跑 CFRunLoopRun()。

而 1.2.7(1 个客户端 + 主 run loop)与 1.2.8(1 个客户端 + dispatch queue)都能正常启动。所以增量里最可疑的是对 HID 服务做查询与多客户端/新线程:HID 事件系统同时驱动着显示唤醒链路,与它"较劲"在这个环境下显然不安全。

1.3.0 的内容

  • 发布构建里不再包含任何 IOHID 代码(产物已核验:IOHIDEventSystemClientCreate / CopyServices / IOHIDEventGetType 等符号全部不存在);
  • 提醒的停止方式回到只依据锁定状态(1.2.7 已验证可正常启动的形态):
    • 解锁(密码 / Face ID)→ 停止;
    • 锁定(用手机时按电源键,或自动锁定)→ 停止;
    • 通知点亮屏幕、点击屏幕、抬手唤醒、自动熄屏 —— 都不会停止提醒;
  • 保留 boot-quiet(启动窗口内零活动)、铃声通道提醒、关键词检测、设置面板。

请这样恢复设备

  1. 强制重启:按一下「音量 +」→ 按一下「音量 −」→ 长按侧边电源键,直到出现 Apple 标志;
  2. 重启后系统是未越狱状态,Sileo 可正常使用;
  3. 在 Sileo 里安装本版本(或先卸载 KeywordSMSAlert 再决定);
  4. 需要时再用 Dopamine 越狱。

抱歉又让你经历一次黑屏 —— 这次我不再在 HID 这条路上继续试探了:证据是它从未生效,继续迭代只会重复拿启动安全冒险。

核验

  • host 单测 48 passed / 0 failed
  • 发布 detector:零 IOHID 符号、零 Hook、未链接 AVFoundation、无 SpringBoard 组件与 LaunchDaemon
  • 包内仍只有 detector dylib + 设置面板 + ksactl