IPA-Patch/KiouEngineBridge

GitHub: IPA-Patch/KiouEngineBridge

该项目是一个 iOS tweak,通过在 KIOU 将棋应用内暴露 CSA v1.2 TCP 服务器,使局域网内的 CSA 客户端能直接与 KIOU 的实时棋盘对弈。

Stars: 0 | Forks: 0

Kiou Engine Bridge

Kiou Engine Bridge icon

KIOU 变为 CSA 对局服务器。此 tweak 在 TCP :4081 端口上使用标准 CSA 服务器协议进行通信,因此任何 CSA 客户端都可以通过局域网连接,并与 KIOU 的实时棋盘对弈 —— 无需额外的 代理,也无需宿主端的包装器。

version targets KIOU platform arch engine protocol side license

Kiou Engine Bridge 是一个由两部分组成的系统中的应用端半部分:tweak 在 KIOU 内部运行,并在 `0.0.0.0:4081` 上暴露一个 CSA TCP 服务器; 局域网上的 CSA 客户端接入后,通过标准的 `LOGIN` / `Game_Summary` / `AGREE` / `START` 握手,然后 通过提交 CSA 格式的走法 (`+7776FU`) 并接收与游戏内端相同的通知,参与到实时的 KIOU 对局中。 当客户端执行其走法时,tweak 会解析它并将其反馈 给 KIOU 自己的 `TryMakeMove` / `OnPlayerMoveAsync` 路径,因此 设备上的对局会像你亲自走棋一样准确推进。 没有代理服务器,没有云端,没有第三方服务 —— 手机上仅有一个约 140 KB 的 dylib,与局域网设备之间仅有一个 TCP socket 连接。有关完整的通信协议约定,请参阅 `docs/csa_protocol.md`。 KEB 在 TCP 链路上暴露了标准的 CSA v1.2 接口: **KEB → 客户端** | 数据行 | 备注 | |---|---| | `LOGIN: OK`, `LOGOUT:completed` | 会话控制 | | `BEGIN Game_Summary ... END Game_Summary` | 完整的对局前导,包含 `KIOU_*` 扩展行 | | `START:` | 在 `AGREE` 之后 | | `,T` | 每步走法通知,包含两种先后手 | | `#RESIGN` / `#SENNICHITE` / `#JISHOGI` / `#CHUDAN` + `#WIN` / `#LOSE` / `#DRAW` | 对局结束 | **客户端 → KEB** | 数据行 | 备注 | |---|---| | `LOGIN ` | 无条件接受 | | `LOGOUT` | 终止会话 | | `AGREE []` / `REJECT []` | 推进 / 拒绝赛前握手 | | `` | 客户端的走法;注入到 KIOU 中 | | `%TORYO` | 驱动 `GameOrchestrator.RequestSurrender` | | `%KACHI` / `%CHUDAN` | 客户端知晓;KIOU 未收到信号 | 完整的映射关系(每个 CSA 字段、KIOU 暴露的内容、我们丢弃的内容)位于 `docs/csa_compatibility.md` 中。网络层面的状态机和示例会话位于 `docs/csa_protocol.md` 中。 ## CSA 协议 v1.2 兼容性 KEB 的目标是 [CSA TCP/IP 服务器协议 v1.2.1](http://www2.computer-shogi.org/protocol/tcp_ip_server_121.html)。 下表简要概述了覆盖情况;有关逐字段的详细信息,请参阅 `docs/csa_compatibility.md`。 | 领域 | 状态 | 备注 | |---|---|---| | 会话 (`LOGIN` / `LOGOUT` / 保活 `\n`) | ✅ | 无条件接受凭据。 | | `BEGIN Game_Summary` 协商 | ✅ | 处理了 `AGREE` / `REJECT`;请参阅下文的偏差说明。 | | `BEGIN Time` 块 | ⚠️ 部分支持 | 写入了 `Total_Time`, `Byoyomi`, `Increment`。省略了 `Delay`, `Least_Time_Per_Move`, `Time_Roundup`(KIOU 未暴露它们)。 | | 初始局面 `BEGIN Position` | ✅ | 以 CSA 格式呈现完整的 9×9 棋盘 + 持驹,源自 KIOU 的实时 SFEN。 | | 每回合走法交换带有 `,T` | ✅ | 通知了双方先后手。在没有权威计时器的模式(VsAI / LocalPvP)中省略了 `T`。 | | `%TORYO`(投降) | ✅ | 调用 `GameOrchestrator.RequestSurrender`。 | | `%KACHI`(入玉胜) | ⚠️ 部分支持 | KEB 知晓并发送 `#JISHOGI`;KIOU 端未收到信号(尚无公开的声明 API)。 | | `%CHUDAN`(中止) | ⚠️ 部分支持 | KEB 发送 `#CHUDAN`;未通知 KIOU。 | | `#WIN` / `#LOSE` / `#DRAW` 结果交付 | ✅ | | | `#RESIGN` / `#SENNICHITE` 原因标记 | ✅ | | | `#TIME_UP` / `#ILLEGAL_MOVE` 原因标记 | ⛔ | 发出的是 `#RESIGN` —— KIOU 未暴露结束原因细节。 | | 让子棋中的 `To_Move` | ⚠️ | 源自 KIOU_Sfen 的轮到走子方;旧版本被硬编码为 `+`。 | | 多客户端分发 | ⛔ | 一次仅限一个客户端;新连接会抢占前一个会话。 | **与规范的重大偏差。** KIOU 的 CPU 在对局开始时会立即走棋,早于客户端回复 `AGREE`。因此,KEB 会紧跟 `Game_Summary` 立即发出 `START:` 并跳过 `AGREE_WAIT` 障碍 —— 客户端会在其 `AGREE` 被确认之前收到 `START:`,而 Floodgate 级别的客户端会默认接受此设定。 ### KIOU_* 扩展 KEB 在 `Game_Summary` 中插入了带有供应商前缀的行,用于提供 CSA 中没有等价物的数据。严格的 CSA 解析器必须忽略未知的键。 | 键 | 示例值 | 描述 | |---|---|---| | `KIOU_Mode` | `VsAI` | 对局模式:`VsAI`, `LocalPvP`, `OnlinePvP`, `RecordReplay`, `Spectate`。 | | `KIOU_StartPosition` | `Standard` | 初始局面类型(例如 `HandicapLance`, `TsumeShogi`)。 | | `KIOU_Sfen` | `lnsgk…` | 起始局面的完整 SFEN;用于为非标准开局设置棋盘。 | | `KIOU_Rank+` / `KIOU_Rank-` | `六段` | 玩家段位(在线对局)。 | | `KIOU_Rate+` / `KIOU_Rate-` | `1832` | 玩家 Rating;为零时省略。 | | `KIOU_UserId+` / `KIOU_UserId-` | `550e8400-e29b-41d4-a716-446655440000` | 玩家用户 ID(UUID 格式);为空时省略。 | | `KIOU_StartedAt` | `2026-06-16T09:30:03Z` | 对局开始时的 ISO 8601 UTC 挂钟时间。 | ## 安装 ### 越狱设备 (rootless) `make package install` 会通过 SSH 传输并安装 `.deb`。 设备上需要安装 `openssh-server`(通过 Sileo/Zebra 安装)。 ``` make package make package install THEOS_DEVICE_IP= ``` dylib 位于 `/var/jb/Library/MobileSubstrate/DynamicLibraries/KiouEngineBridge.dylib` 并在下次启动时由 ElleKit 加载。注销或重新启动 KIOU,然后 将你的 CSA 客户端指向 `tcp://:4081`。 ### 未越狱 dylib (TrollStore) TrollStore 仅在特定的 iOS 版本上受支持。在继续之前请检查 [支持的版本表](https://ios.cfw.guide/installing-trollstore/)。 ``` make JAILED=1 # -> packages/jailed/KiouEngineBridge.dylib ``` 将其暂存到解密后的 KIOU `.app/Frameworks/` 中,添加一个 `LC_LOAD_DYLIB`, 然后通过 TrollStore 安装。 ### 修补版 IPA (Sideload) 适用于无法使用 TrollStore 的设备。使用 [Sideloadly](https://sideloadly.io/) 或 [AltStore](https://altstore.io/) 安装修补过的 IPA。 需要 **已解密** 的 KIOU IPA(例如通过 [palera1n](https://palera.in/) + Filza 获取,或通过 [TrollDecrypt](https://github.com/donato-fiore/TrollDecrypt))。 App Store 下载的版本带有 FairPlay 加密,无法直接进行修补。 ``` make BINPATCH=1 # -> packages/binpatch/KiouEngineBridge.dylib ``` 然后构建修补后的 IPA: ``` shared/tools/build_patched_ipa.sh \ --recipe kiouenginebridge \ --framework UnityFramework \ --dylib packages/binpatch/KiouEngineBridge.dylib \ --input Kiou-1.0.1.ipa # -> Kiou-1.0.1-patched.ipa ``` 与运行时的 hook 引擎(Substrate, Dobby, frida-gum)不同,静态 二进制修补永远不会在运行时写入 `__TEXT`,并且能够躲过 iOS 18 代码签名监视器 (CSM) —— binpatch 变种支持 iOS 15.0 – 18.x。 所有三种构建变种均提供了完整的 CSA 协议接口 —— Game_Summary, 每步走法通知,投降 / 和棋处理。有关完整的构建矩阵,请参阅 `docs/plans/kiou_engine_bridge_binpatch.md` § 2。 ## 兼容性 | | | |---|---| | **KIOU 应用版本** | `1.0.1` (`CFBundleVersion` 11) | | **KIOU 最低 iOS 版本** | 10.0(应用包中的 `MinimumOSVersion`) | | **KiouEngineBridge 最低 iOS 版本** | 15.0 | | **测试环境** | 15.0 – 26, arm64 | | **分发方式** | 越狱的 `.deb`,TrollStore 注入的未越狱 `.dylib`,修补的 IPA (Sideloadly / AltStore) | | **引擎通信** | 通过纯 TCP (`:4081`) 的 CSA 服务器协议 v1.2 | 所有的 hook 站点都通过 RVA 固定到了这个确切的 KIOU 构建版本上。在 KIOU 更新后, RVA 会发生偏移。 ## 环境要求 - [Theos](https://theos.dev/) 并安装了标准的 iOS 工具链 (已设置 `$THEOS`)。Kiou Engine Bridge 是纯 Objective-C —— 没有 Orion, 也没有 Swift 运行时。 - iOS 15.0–26, arm64。 - 对于未越狱路径:一份已解密的 KIOU `.ipa` 副本。 ### 开发者 hooks ``` make hooks ``` 将 `scripts/` 注册为 git hooks 路径,以便在每次提交之前触发 `scripts/pre-commit`。当提交涉及 `recipes/*.py` 或 `shared/tools/` 时,该 hook 会运行 `tools.verify_sites`,将每一行 `_SITES` 与 `assets/dump.cs.index.json` 进行交叉比对。如果 dump 索引 不存在(未提交到 repo 中),该 hook 会退出并返回 0 并打印提醒 —— 这是一个仅限本地的关卡,不是 CI 的要求。 ## 日志去向 dylib 会将其自身的诊断日志写入 KIOU 沙盒中: ``` /tmp/kiouenginebridge.log ``` — 在越狱设备上对应于 `/var/mobile/Containers/Data/Application//tmp/kiouenginebridge.log` 。通过 SSH 使用 tail 命令查看它,可以实时观看对局和 CSA 握手的解析过程: ``` ssh root@ 'tail -F /var/mobile/Containers/Data/Application/*/tmp/kiouenginebridge.log' ``` 每场对局都会产生交织着走子注入结果的 `[MMODE]` 生命周期日志行、`[CSA]` 连接 事件,以及 `[CSA-ENG]` 引擎状态转换。 ## 许可证 在 [MIT 许可证](LICENSE) 下发布 —— 有关 完整文本,请参见 `LICENSE` 文件。
标签:CSA协议, CVE监控, IL2CPP, iOS越狱插件, TCP服务端, 人机对弈, 游戏Mod