把 Xbox One 的《荒野大镖客 2》存档转换到 PC

这件事最麻烦的地方不是“复制文件”,而是 Xbox One 不提供直接导出云存档的入口,导出的文件还套着与 PC 版不同的游戏层加密。经过真实存档对照后,我把下载、检查和转换整理成了一套可复现流程,并做成了一个 Windows/macOS 原生 GUI 工具

只支持剧情模式存档,不支持 Red Dead Online。操作前备份 Xbox 下载结果和整个 PC Profiles 目录。

整体流程

  1. 在 Windows 上用 LukeDevsE/xbcsmgrrev 通过微软设备码授权,下载 Xbox Connected Storage;
  2. 保留每个槽位的 Save Game DataSave Game Header,按原目录结构打成 ZIP;
  3. 从公开资料自行取得 Xbox 与 PC 两把游戏层 AES-256 key,填入本机配置;
  4. 用转换器检查、转换并做完整性验证;
  5. 把结果放进 RDR2 PC 版 Profile,先关闭云同步测试,成功后另存一个新槽位。

第一步:用 xbcsmgrrev 下载 Xbox 云存档

下载工具使用 LukeDevsE/xbcsmgrrev。它不是 Rockstar 或 Microsoft 官方工具,建议先阅读其源码,只从项目自己的 Release 下载。

安全登录原则

xbcsmgrrev 使用微软的设备码登录流程。正确情况下,程序给出短设备码和微软登录地址,你在浏览器的微软官方域名中登录并确认授权;不要把微软用户名、密码或验证码输入第三方程序窗口。这样第三方程序拿到的是授权令牌,而不是你的密码。

为了降低风险,建议使用完后:

  1. 退出工具;
  2. 删除它在本机保存的 refresh token/缓存;
  3. 到微软账户的应用权限页面撤销此次授权;
  4. 不分享下载日志,因为其中可能包含账号标识、容器名或令牌。

下载操作

  1. 在一台 Windows 电脑上解压并运行 xbcsmgrrev
  2. 按界面提示选择登录,在浏览器打开它给出的微软设备登录网址;
  3. 核对浏览器地址确实属于微软官方域名,输入设备码并授权 Xbox 账号;
  4. 在游戏列表中找到 RDR2,枚举 Connected Storage 的容器;
  5. 每个顶层容器分别下载到一个新的空目录,不要只挑看起来最新的单个文件;
  6. 确认槽位目录里同时存在 Save Game DataSave Game Header
  7. 把所有 SRDR... 槽位目录放在同一个目录下,再打成 ZIP。不要改槽位名或内部文件名。

转换器会递归查找 ZIP 中的槽位,所以外层多一层导出目录没有关系。缺少 header/data、路径异常、重复槽位或结构不一致时会直接拒绝转换。

第二步:准备本地 key 配置

转换需要两把 Rockstar 游戏层 AES-256 key。为避免在新仓库和 Release 里再次分发可能引发投诉的密钥,项目没有内置、复制或下载 key,只告诉用户原始公开资料的位置:

这里不展示密钥正文。你取得的每一项都应是 64 个十六进制字符(32 字节)。在 GUI 中点击“创建空白配置模板”,填成:

xbox_save_key = "这里填 64 个十六进制字符"
pc_save_key = "这里填 64 个十六进制字符"

配置只放本机,不要提交到 GitHub、Issue、聊天、截图或网盘。程序还支持把 rdr2-converter.toml 放在可执行文件旁的便携模式。

第三步:转换与验证

  1. 从 Release 下载与你系统相符的 ZIP,并对照 SHA256SUMS.txt
  2. 解压运行 GUI,选择由 xbcsmgrrev 结果制作的 ZIP;
  3. 选择 key 配置,先点“检查存档”;
  4. 选择一个尚不存在的输出目录;
  5. 点“转换并严格验证”。

成功后会得到 SRDR30000 等文件以及 conversion_manifest.json。输出目录必须不存在,是为了避免误覆盖原文件;转换会先写入临时目录,全部验证成功后再原子改名。

本工具不是简单地“换个文件头”。它会:

  • 检查 Xbox atom header 的版本、长度、标题与时间戳;
  • 用 Xbox key 解密,并确认主体是合法的 RSAV v3;
  • 检查 9 个固定块 ID、动态块边界、CODE/S000…S008 标签和 ENDS
  • 验证恰好 10 个 CHKS 记录及 seeded JOOAT 校验;
  • 将原文用 Xbox key 回加密并逐字节对照;
  • 用 PC key 加密同一 RSAV 主体,创建 PC header 与校验和;
  • 再从最终 PC 文件解密、回加密,确认内容完全一致。

我用实际下载的 13 个 Xbox One 槽位做过端到端测试,Rust 版本输出与此前逐槽验证过的转换结果 SHA-256 完全一致。因为旧存档与新存档可能采用不同的合法块尺寸,验证器读取文件自己的动态布局,不把某一版 PC 存档尺寸硬编码成唯一答案。

第四步:导入 PC 版

RDR2 PC 存档一般位于:

%USERPROFILE%\Documents\Rockstar Games\Red Dead Redemption 2\Profiles\<Profile ID>

建议这样做:

  1. 退出游戏与 Rockstar Games Launcher;
  2. 完整备份 Profiles
  3. 暂时关闭 Launcher 云存档;
  4. 复制转换后的 SRDR... 文件,不复制 manifest;
  5. 启动游戏,优先加载最新的手动存档;
  6. 成功进入后立刻另存到一个新的 PC 手动槽位;
  7. 退出游戏,再恢复云同步;遇到云端/本地冲突时选刚生成的新本地存档。

Xbox 与 PC 的成就、在线角色、平台账号状态不会随剧情存档一起迁移。个别版本差异或 DLC 状态仍可能令游戏拒绝某个槽位,所以务必保留原始备份。

工具为什么不需要你的账号

账号登录只发生在 Windows 上的 xbcsmgrrev 下载阶段。转换器本身不登录 Xbox、不包含 HTTP 客户端、不上传存档,也不会把 key 写入日志或 manifest。源码公开,核心转换逻辑在 src/lib.rs,GUI 只是本地文件选择界面。

这套方案把两个风险面分开:下载工具只负责取得你有权访问的 Connected Storage;转换器只处理本地 ZIP。即使如此,第三方工具仍然需要你自行评估,设备码授权用完即撤销是比较稳妥的做法。

免责声明

项目与 Rockstar Games、Take-Two Interactive、Microsoft、Xbox 及 xbcsmgrrev 作者无隶属关系。请只转换自己有权访问的剧情存档;游戏更新后格式可能变化,任何操作都应以备份为前提。