如何安全回滚 Godot 源码?Godot Secure 备份与恢复指南:restore_backup.py 完整用法

发布时间:2026/11/4 1:24:49
如何安全回滚 Godot 源码?Godot Secure 备份与恢复指南:restore_backup.py 完整用法

【免费下载链接】Godot-Secure

Godot Secure is a Simple Python Script That modify the Godot Source Code Automatically, to integrate Camellia-256 / AES-256 encryption with a unique security token system. This solution creates a cryptographically unique engine build that prevents generic decryption tools from accessing your game assets.

项目地址:https://gitcode.com/gh_mirrors/go/Godot-Secure
点击查看免费下载

Godot Secure 备份与恢复是加密改造 Godot 引擎后必不可少的一步。当你运行 Godot Secure 脚本(如 AES-256 或 Camellia-256 版本)自动修改 Godot 源码、集成加密和安全令牌后,如果想要还原回官方原始源码,只需运行官方提供的restore_backup.py恢复脚本即可。本文面向新手,详细讲解备份文件是如何生成的、restore_backup.py脚本的完整用法、各条彩色输出的含义,以及回滚时必须注意的源码安全事项。

Godot Secure 备份与恢复项目横版图片

一、Godot Secure 是如何自动创建备份的?

Godot Secure 的核心思路是:在改写每个源码文件之前,先复制一份原始内容,保存为「原文件路径 +.backup」后缀的备份文件。

以 AES-256 Release-v4 版本为例,脚本在修改文件前会先写入备份,相关逻辑见:

  • Godot Secure AES-256 (Release-v4_v4.6.x - Latest).py.py#L435-L457)

这意味着每次加密改造成功后,你的源码目录里都会存在一组形如xxx.cpp.backup的原始文件副本——这正是restore_backup.py能够「一键还原」的基础。

二、restore_backup.py 脚本完整用法

恢复脚本位于 restore_backup.py,它是纯 Python 实现,无需任何第三方依赖。

1. 运行前准备

  • 确认你手上有被 Godot Secure 修改过的 Godot 源码目录(即包含core/目录和SConstruct文件的有效源码根目录)。
  • 脚本会先校验目录是否为合法的 Godot 源码,见 restore_backup.py 第 58-68 行。如果路径不对,会直接报Error: No valid Godot Source Detected并退出。

2. 一键恢复

# 方式一:传入 Godot 源码根目录(推荐) python restore_backup.py /path/to/godot # 方式二:直接在 Godot 源码根目录下运行,不带参数 cd /path/to/godot python /path/to/Godot-Secure/Godot\ Secure\ Scripts/utils/restore_backup.py

参数规则(见 restore_backup.py 第 42-56 行):

参数数量行为
0 个使用当前目录作为 Godot 源码根目录
1 个使用该参数作为 Godot 源码根目录
2 个及以上报错并提示用法,脚本退出

3. 如何看懂运行输出

恢复过程的核心循环在 restore_backup.py 第 70-85 行,脚本会逐个检查被 Godot Secure 修改过的文件:

输出颜色提示信息含义
🟢 绿色Restore backup file <路径>发现.backup备份,已用它覆盖当前文件,恢复成功
🟡 黄色Created file using backup <路径>当前文件已被你手动删除,脚本用备份重建了该文件
🟡 黄色Can't found backup file for <路径>未找到该文件的备份(对加密脚本不会修改的文件属正常现象)
🔴 红色Error: No valid Godot Source Detected...目录不是有效的 Godot 源码,检查路径后重试

4. 恢复覆盖的文件清单

脚本内置了与加密脚本一致的修改文件列表(restore_backup.py 第 8-19 行):

  • version.py
  • editor/export/project_export.cpp
  • core/crypto/security_token.h
  • core/io/file_access_pack.h
  • core/io/file_access_encrypted.h/file_access_encrypted.cpp
  • core/crypto/crypto_core.h/crypto_core.cpp(仅 Camellia 版本涉及,AES 版本下无备份属于正常,脚本已做了兼容处理)

三、源码安全注意事项 ⚠️

恢复源码不只是「删掉修改」,还有几个容易被忽视的安全细节:

  1. security_token.h是敏感文件:32 字节安全令牌就嵌在这个头文件里,并最终固化进编译产物。恢复后该文件会还原为官方版本,但你之前已编译的引擎/导出模板二进制中仍然保留着旧令牌。如果怀疑密钥或令牌已泄露,正确做法是彻底重新克隆干净的 Godot 源码重新构建,而不是只依赖恢复脚本。

  2. .backup文件不要提交进版本库:虽然备份内容是官方原始文件,但混在源码树中容易造成混淆。确认恢复成功后,可以安全清理它们。

  3. 加密密钥不在恢复范围内:godot.gdkey文件与环境变量SCRIPT_AES256_ENCRYPTION_KEY由你自己管理,恢复脚本不会处理它们。密钥同样需要妥善保管,必要时轮换。

  4. 只跑一次加密脚本:官方 README 特别提醒,对同一份源码重复运行加密脚本可能导致编译错误(见 README.md)。如果恢复后想再次加密,建议先刷新为干净的 Godot 源码。

四、常见问题排查

问题解决方法
提示目录无效传入包含SConstruct和core/的源码根目录,必要时使用绝对路径
个别文件提示找不到备份属正常现象(该文件未被本次加密脚本修改),不影响其余文件恢复
恢复后编译报错执行scons --clean清理构建缓存,再重新编译
加密/解密不匹配引擎与导出模板必须使用同一次构建的产物(见 README.md)

更多背景可参考各版本脚本目录说明:v4.6.x - Latest、v4.x.x - v4.5.x。

Godot Secure 加密引擎项目标识图

五、小结

restore_backup.py是 Godot Secure 官方工具链中的「后悔药」:加密脚本在修改每个文件前自动创建.backup备份,恢复脚本则按文件清单逐一用备份覆盖或重建,输出清晰、无第三方依赖。只需记住三件事:传入正确的源码根目录、留意黄色/红色提示、令牌与密钥的安全管理不能只靠恢复脚本。掌握这套备份与恢复流程,你就能放心地在 Godot Secure 加密引擎和官方源码之间来回切换。

【免费下载链接】Godot-Secure

Godot Secure is a Simple Python Script That modify the Godot Source Code Automatically, to integrate Camellia-256 / AES-256 encryption with a unique security token system. This solution creates a cryptographically unique engine build that prevents generic decryption tools from accessing your game assets.

项目地址:https://gitcode.com/gh_mirrors/go/Godot-Secure
点击查看免费下载
上一篇:系统崩溃应急响应:Bash-Oneliner灾难恢复实战指南
下一篇:终极指南:如何为jsnes NES模拟器实现多语言国际化支持

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考