查看: 424|回复: 18

[讨论] [开源] Chronos Seal v1.2.1 - 为 RPG Maker MV/MZ 设计的动态加密系统

[复制链接]
梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
发表于 2026-8-30 23:01:50 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
大家好,我是 CLARE。

这段时间我做了一个小东西,叫 Chronos Seal。它不是什么商业产品,是一套基于 C++ / Node-API / OpenSSL / Steam API 的动态加密方案,专门针对 RPG Maker MV/MZ 的 system.json 加密而设计。

项目已在 GitHub 上完全开源(MIT License),欢迎任何开发者直接拿去用。
GitHub 地址:https://github.com/CLARE-XHL/Chronos-Seal

如果你好奇它的设计逻辑,或者想看看“C++ 如何嵌入 RM 引擎”,这篇文章可能会对你有帮助。


▎为什么会有这个东西?

用过 RM 的朋友都知道,MV/MZ 的 system.json 默认是明文存储的,只要解包就能看到完整配置文件。市面上常见的“加密工具”大多是改个后缀名、或者用简单的 XOR 混淆,真正能拦住脚本小子的方案几乎没有。

所以我想试一下,能不能用纯客户端的方式,把破解成本拉高到“不值得”的程度——不做服务器验证,不做代码虚拟化,不折腾正版用户,只靠 C++ 的二进制壁垒 + 密钥派生逻辑 + 运行时动态检查,让想搞通用补丁的人难受。

目前 V1.2.1 已经跑通,V1.3 正在开发中。


▎核心特性

· C++ 原生插件(Node-API):核心逻辑跑在 C++ 层,JS 层拿不到密钥。
· AES-256-CBC + HMAC-SHA256:非对称派生密钥,发行密钥 + 用户密钥分离。
· Steam UID 绑定:首次激活时与当前 Steam ID 绑定,换账号无法启动。
· 检查点机制:运行时埋点,C++ 层校验,盗版删 JS 会触发惩罚。
· 随机盐值 + 版本绑定:每次编译生成的密钥都不一样,同一个版本号在不同开发者手里也是“不同个体”。
· 时间炸弹 + 回拨检测:双存储(注册表 + ADS),防止篡改系统时间。
· 看门狗(Watchdog):JS 主线程被挂起时,C++ 自动退出进程。
· MIT 完全开源:代码全公开,欢迎任何人审阅、使用、甚至尝试破解。

快速上手

详细文档请见 GitHub 仓库的 README.md吧,我都写在里面了。


▎项目结构

ChronosSeal/
├── decryptor.cc          # C++ 核心逻辑
├── build.bat                  # 生成 config.h 并编译插件
├── encrypt.bat                # 加密 system.json(部署后执行)
├── auth_manager.js            # JS 胶水层,暴露接口给 RM
├── index.html                 # 启动入口(含劫持逻辑)
├── binding.gyp                # Node-API 编译配置
└── config.h                   # 由 build.bat 自动生成(含随机盐值)


▎设计哲学

这个项目的定位不是“防破解”,而是“阻止通用补丁批量传播”。

我完全接受本地加密必然被破解的事实——但破解者每破一个版本,都得重头反编译 C++;而我只需要在后台点一下 build.bat,就能生成一套全新的密钥体系。

这就像一场体力和意志力的消耗战。代码给你看,逻辑给你讲,但每次编译出来的二进制,连我自己都不知道它长什么样。


▎对破解者说几句话

欢迎来挖洞、来提 Issue、来 PR。
你破得越深,我补得越快,这套系统就会越强。
如果你愿意,这个项目的贡献者名单里,永远给你留一个位置。

这不是客气话。我是认真这么想的。
真正能把 C++ / OpenSSL / Node-API 这套链路打通的人,已经是顶级开发者了。这种人不需要靠盗版吃饭,也更值得被尊重。


▎目前状态 & 未来计划

· V1.2.1(当前):稳定可用,但还没有尝试过生产环境(明天我会试一下,各位朋友也可以帮忙做测试),核心功能完整。
· V1.3(开发中):增加随机检查点 + 假检查点 + 超时检测,进一步增加破解成本。
· V2.0(规划中):密钥分片 + CRC 自检 + JSON 注入绑定(不急着做,等反馈)。


▎致谢

感谢我的朋友们,在我三天五个版本的高强度开发中没空上岛联机时,没把我从群里踢出去。
也感谢 RM 圈子里每一位还在认真做游戏、认真思考加密问题的开发者。

这个项目如果能给你一点点启发,或者帮你拦住一次盗版,那就是它最大的价值。

有任何问题、建议、或者想嘲讽我代码写得太烂的,请直接开 Issue,我全看。
梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-9-1 01:21:50 | 显示全部楼层
fux2 发表于 2026-8-31 20:48
并不是批评哦,你能找到自己想做的事情并且真的去做已经超过很多人了
我也只是基于经验给你提 ...

感谢之前的反馈,每一条都切中要害,直接促使我重新思考了 V1.x 的方向。在重构前我认真想了一下你说的那几个问题,决定彻底推倒重来,现在 V2.0 已基本成型,简单说下目前的进展:

V2.0 的核心改动:

· 彻底移除 Steam SDK 依赖:不再需要 Steam 账号、Steamworks SDK、Steam API,任何 RM 游戏都能用,不再绑定任何外部平台
· 彻底移除本地编译环境:不再需要安装 Node.js、Python、MSVC、OpenSSL,全部由 GitHub Actions 云端编译
· 云端编译(GitHub Actions):用户 Fork 模板仓库到自己的私有仓库 → 填写游戏名称、版本号、截止日期 → 自动编译 → 下载 decryptor.node 和 system.json.enc
· 零知识设计:Salt 和 IV 只在用户自己的 GitHub Actions 中生成,作者和平台无法接触
· 完全可逆:加密只针对发行包,工程文件零修改

两个仓库:

1. 主仓库(文档 + Releases):https://github.com/CLARE-XHL/Chronos-Seal
2. 云端编译模板仓库(Action + 源码):https://github.com/CLARE-XHL/Chronos-Builder-Template

当前状态:

Action 已经搭起来了,流程设计也基本闭环了,但还没有实际跑通过测试,目前只是把架子搭好。如果你有兴趣的话,欢迎 Fork 模板仓库跑一下测试,看看有没有什么问题,如果跑通了我就可以正式发 V2.0 了。

再次感谢之前的反馈,不然我可能还在 V1.x 的坑里打转,但patch那里的确暂时没办法解决,这个是单机游戏不可绕过的一个缺陷,只能靠硬拖来脱一脱。
回复

使用道具 举报

梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-9-2 20:37:42 | 显示全部楼层
V2.1已经在落项了 V2.0就先不要找了 (改的快要魔怔了)
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45692
在线时间
7947 小时
注册时间
2009-7-6
回帖
13335

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2026-8-31 12:42:51 | 显示全部楼层
大致看了一遍,也不知道有没有理解错,感觉最大的问题可能是依赖steamapi。除开使用上的问题,就我个人的经验来看实际强度极其有限,至少在“阻止通用补丁批量传播”这件事上其实并没有起到什么作用
或者说,楼主似乎把密文不统一和攻击手段不统一混为一谈了?密文入口,明文出口全在本地,你的编译也没有加入特别的工序能让他像暴雪游戏那样的专有编译器能每次编译时都产生不一样的代码段结果,一个patch解决是完全可行的。
严肃地说,这个项目仅仅是楼主自己付出了比较大的精力,就按我粗浅过一遍的理解来看,应该是对decryptor.node一个特征码定位就能拿到每次更新后的密钥,这还只是较真非得走静态路线的结果。

最后我觉得应该思考一下这个项目具体是在保护什么,保护system.json的实际目的是什么,这个文件里藏的最有用的只有解包密钥,可以理解为意在保护资源文件,但同时又加入了对steamuid的校验,这就有点强行做两件不相关的事情了,还有可能
因为这个校验误杀本地多用户,还有写入注册表的这部分信息,含时间戳的哈希校验似乎也是有点问题的,用户在多次启动游戏之后真的能过校验吗?不过这部分我也没细看,也许理解也有误,总之这个大方向我觉得不太可取。
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 1 0

使用道具 举报

梦石
0
星屑
100
在线时间
1022 小时
注册时间
2021-3-24
回帖
544

MZ评测员

发表于 2026-8-31 12:45:01 | 显示全部楼层
豆包豆包 你搞定下
全家活光光~
回复

使用道具 举报

梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-8-31 18:42:04 | 显示全部楼层
fux2 发表于 2026-8-31 12:42
大致看了一遍,也不知道有没有理解错,感觉最大的问题可能是依赖steamapi。除开使用上的问题,就我个人的经 ...

的确 目前还在在测试 只不过被环境卡住了 但说真的的确有点越改越复杂了 现在也在想着去精简 但有点想无从下手了
回复

使用道具 举报

梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-8-31 18:46:00 | 显示全部楼层
fux2 发表于 2026-8-31 12:42
大致看了一遍,也不知道有没有理解错,感觉最大的问题可能是依赖steamapi。除开使用上的问题,就我个人的经 ...

有点改的复杂 最初其实是已以时间戳去为核心的  后续的确是偏离核心了 感谢批评 我会去改的
回复

使用道具 举报

梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-8-31 19:07:20 | 显示全部楼层
fux2 发表于 2026-8-31 12:42
大致看了一遍,也不知道有没有理解错,感觉最大的问题可能是依赖steamapi。除开使用上的问题,就我个人的经 ...

最后决定是要剔除掉关于Steam SDK的依赖而且简化开发者的编译门槛 但有点要重构项目的感觉 虽然有点难搞 但给我点时间我也能搞出来 敬请期待V2.0版本吧
回复

使用道具 举报

梦石
0
星屑
5367
在线时间
272 小时
注册时间
2022-12-18
回帖
264
发表于 2026-8-31 19:07:55 | 显示全部楼层
加油 支持你
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45692
在线时间
7947 小时
注册时间
2009-7-6
回帖
13335

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2026-8-31 20:48:18 | 显示全部楼层
CLAREXHL 发表于 2026-8-31 18:46
有点改的复杂 最初其实是已以时间戳去为核心的  后续的确是偏离核心了 感谢批评 我会去改的 ...

并不是批评哦,你能找到自己想做的事情并且真的去做已经超过很多人了
我也只是基于经验给你提出一些意见,希望你下一个版本会更完善!
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
175
在线时间
10 小时
注册时间
2025-9-14
回帖
12
 楼主| 发表于 2026-8-31 21:14:10 | 显示全部楼层
fux2 发表于 2026-8-31 20:48
并不是批评哦,你能找到自己想做的事情并且真的去做已经超过很多人了
我也只是基于经验给你提 ...

没事的 我也是很希望能去有人去及时纠正我的错误 V2.0的重构已经开始理论推演啦 这次会分别为两个版本 Steam版和免费版 两者其核心都是主攻system.json的加密 只是Steam版会额外调用一下Steam的DRM确定该游戏已被购买
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部