M4:多态、启动器、平台与 Steam
M4 涵盖逐构建分化、跨平台启动与 Steam 支持。按照本项目自身的开放核心拆分,多态引擎与原生启动器属于闭源组件,而 Steam、Proton、Windows 与 Linux 需要相应的硬件环境才能实际验证。本页准确说明开源基线在此交付并验证了哪些内容,以及哪些内容属于闭源组件或尚待硬件验证。
逐构建分化(基线,已可用)
“破解一款游戏的成果无法迁移到下一款”这一特性从基线层面即已开始:每一次 protect 运行都会产出一个在密码学上相互独立的构建。
- 一个随机的 16 字节
container_id作为全部密钥派生(HKDF)的盐,此外还有随机的逐文件 ID 与密钥,以及逐分块的 nonce - 因此,同一款游戏保护两次,会得到不同的
container_id、不同的逐文件密钥与不同的容器,一个构建的密钥无法读取另一个构建;这一点已由tests/test_cli.py::test_two_builds_are_cryptographically_independent证明 - 脚本密钥独立于容器密钥,见 脚本层与引擎锁定
基线不会随机化的部分:容器的字节布局与字段顺序,以及脚本 AST 的类名均保持标准形式(仅重新加密)。
闭源升级:多态引擎
闭源二进制插件会逐构建随机化结构,即容器布局与已编译脚本的编码方式,使攻击者即使握有密钥,也无法编写通用的读取器或反编译器。它通过稳定且有文档的进程接口接入 renmori protect(见 架构 与 插件接口);开源 CLI 是集成点,在没有插件时运行基线格式。其机制与实现属于专有内容,位于私有仓库 MewBaka/RenMori-core。
启动器与平台
基线通过 Ren'Py 的扩展机制(game/renmori.rpe)加载,在正常启动过程中运行于 Ren'Py 自带的 Python 之内。该机制与平台无关:同一个 .rpe 可在 Windows、macOS、Linux 与 Steam Deck 上工作,因为它只依赖 Ren'Py 的 Python 与 ctypes,而不依赖任何特定操作系统的启动器二进制。
各平台的 AES-GCM 后端(统一接口位于 container/crypto.py):
该库在 Python 可执行文件所在目录中查找(runtime_lib_candidates,有单元测试覆盖),从不通过 CDLL(None) 加载。
原生启动器(闭源,后续交付)
分平台的原生启动器从容器引导内嵌的 Python,并执行运行时密钥派生(使 autorun.py 中不再留有密钥);它属于闭源加固措施,不是开源交付物。在 macOS 上,它会在构建时自动完成 ad-hoc 签名(免费,Apple Silicon 上必需),并保留以 Developer ID 重新签名的能力。基线不分发任何新的可执行文件,因此与原始的 Ren'Py 构建相比,不会增加任何签名负担。
Steam
- Steam 叠加层(Overlay)在结构上即可安全使用:Steam 叠加层会向游戏进程注入一个 DLL,而 RenMori 只挂钩 Ren'Py 的文件加载,从不进行进程或 DLL 注入,也不在热路径上执行反篡改,因此不会阻断叠加层
- 在
renpy.loader之外读取的文件保留在磁盘上:Steam SDK 直接读取steam_appid.txt(不经过加载器),因此该文件默认保持不加密(DEFAULT_KEEP_ON_DISK);其他此类文件可通过renmori.toml中的keep_on_disk添加;这一点已由tests/test_cli.py::test_steam_appid_kept_on_disk证明 - 成就与云存档经由 Ren'Py 的 Python API 实现,未被改动;
.rmc是静态文件,因此 Steam 的文件校验与更新均正常工作 - 不要与 Steam DRM 双重包装:Steam DRM 会改写可执行文件,可能与原生启动器的自校验冲突,且其本身防护较弱
完整的 Steam、Proton 与 Steam Deck 实机运行尚待相应硬件;上述特性均基于结构分析(钩子与文件放置方式),并未在此进行实机测试。
面向开发者的发布流程(构建、保护、SteamPipe 上传,各文件对应的 depot,以及启动选项)见 Steam 发行指南。
M4 的其他内容
renpy.exists()(原本仅检查磁盘)现在也会查询容器,因此使用它探测文件的游戏能够看到已封入容器的文件(_install_exists_fallback)
当前状态
开源基线(已在 macOS / Ren'Py 8.5.2 上验证):逐构建分化、跨平台的 .rpe 加载路径、Steam 文件放置与结构上的叠加层安全性,以及 renpy.exists 回退。闭源或待硬件验证:多态引擎、执行密钥派生的原生启动器,以及 Windows、Linux 与 Steam 上的实机运行。