Gezine/CivSwitch
游戏利用《文明7》卡带聊天 XSS 实现 Switch 用户态代码执行,并可持久化加载自定义 JavaScript 载荷。
项目介绍
CivSwitch 是面向 Switch 1 版《文明 7》的漏洞利用工具链。它借助游戏内多人聊天注入 JavaScript,在主机上实现用户态代码执行,并能把载荷持久化写入存档,让它在每次开机后自动运行。适用对象是已持有实体 1.0.0 卡带、并希望执行自己 JavaScript 载荷的 Switch 玩家。
整条链分两部分。PicoSwitch 是 RP2040/RP2350 固件,作为 USB HID 键盘把聊天 XSS 载荷逐行敲进游戏聊天框;默认载荷是一个 Remote JS Loader,会在 9026 端口起 TCP loader。installer-creator 接收任意 JavaScript 载荷,生成开机自启的安装器,方式是把 XSTRIG.Civ7Save 触发器写进存档。两个组件都由根目录的 core.js 构建,send_js.py 负责把载荷发给运行中的 loader。JS 漏洞核心参考了 Netflix-N-Hack 的 inject.js 及其 ufm42 分支,固件基于 Pico-Switch-Controller。
使用前提
- 必须使用 Switch 1 版《文明 7》实体卡带,且仅支持 1.0.0 版本。
- 已在 Switch 1 固件 22.5.0、Switch 2 固件 20.4.0 与 23.0.1 上使用 Pico 2(RP2350)测试;Pico 1(RP2040)未测试。
- 敲入漏洞期间主机系统语言须设为 English (US),安装器执行完成后可以改回。
- 构建固件需要 Ubuntu 24.04 等 Linux 主机(或使用构建好的 UF2),安装器和
send_js.py步骤需要一台与主机同一网络的 PC。
快速使用
- 按
PicoSwitch/README.md构建并刷入 loader UF2。在 Ubuntu 24.04 上需安装 ARM 交叉工具链、CMake、Ninja 和 Node,按 tag 2.3.1 克隆pico-sdk,导出PICO_SDK_PATH,在PicoSwitch/下执行npm install和node compress.js,然后按预设构建:
cmake --preset pico2 && cmake --build --preset pico2 # RP2350 -> build-pico2/src/civ7-pico2.uf2
cmake --preset pico1 && cmake --build --preset pico1 # RP2040 -> build-pico1/src/civ7-pico1.uf2
- 在 Switch 上把系统语言设为 English (US),启动游戏后依次进入 MULTIPLAYER → WIRELESS → CREATE GAME → HOST LOBBY → CHAT。插入 Pico,它会用约 15 分钟敲入约 87 行代码,随后 Remote JS Loader 在该会话内于
:9026端口就绪。 - 在 PC 上安装持久触发器:
python installer-creator/install.py <console-ip>
该命令上传存档模板,在主机上拼接压缩后的载荷,清空 save:/saves/Single/ 并写入触发器。完成后可以把系统语言改回去。
4. 以后每次开机进入主菜单 → Load Game,载荷就会从存档运行;如果载荷是 loader,9026 端口在开机时即可用,且能在主机休眠/唤醒后继续存在。
需要向运行中的 loader 发送载荷时:
python send_js.py <console-ip> [port] file.js
默认使用 9026 端口,原样发送文件,并打印主机回传的日志直到连接关闭或超时。
使用约束
- 仅支持 1.0.0 实体卡带,后续游戏版本或数字版都不在支持范围内。
- 第一阶段敲入漏洞耗时约 15 分钟,且要求聊天框获得焦点;底座模式下需在插入 Pico 前先点中聊天框。
- 持久触发器会写入存档并清空
save:/saves/Single/,该路径下已有的单人存档应视为丢失。 - 构建步骤以 Ubuntu 24.04 和 Pico SDK 2.3.1 为前提,其他工具链或 SDK 版本不在文档覆盖范围内。
- 仓库使用 MIT 许可证,但漏洞利用对主机和账号造成的影响由使用者自行承担,它并非官方支持的游戏模组。
HotRepo 点评
该项目出现在 HotRepo 2026-11-01 的新项目榜:首日约五小时窗口内记录到 136 Star 和 30 Fork。对一个依赖特定卡带的窄众漏洞项目来说开局增速很快,但目前没有更长时间的名次数据,只能说明第一天的关注度,不足以判断持续趋势。受限于单一游戏版本、实体卡带和 Pico 2 硬件,目标读者更可能是主机折腾玩家,而不是普通《文明 7》玩家。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。