把 Xbox One 的《荒野大镖客 2》存档转换到 PC
这件事最麻烦的地方不是“复制文件”,而是 Xbox One 不提供直接导出云存档的入口,导出的文件还套着与 PC 版不同的游戏层加密。经过真实存档对照后,我把下载、检查和转换整理成了一套可复现流程,并做成了一个 Windows/macOS 原生 GUI 工具:
- 源码与安全说明:hupose/rdr2-xbox-save-converter
- 可执行文件:GitHub Releases
只支持剧情模式存档,不支持 Red Dead Online。操作前备份 Xbox 下载结果和整个 PC
Profiles目录。
整体流程
- 在 Windows 上用 LukeDevsE/xbcsmgrrev 通过微软设备码授权,下载 Xbox Connected Storage;
- 保留每个槽位的
Save Game Data和Save Game Header,按原目录结构打成 ZIP; - 从公开资料自行取得 Xbox 与 PC 两把游戏层 AES-256 key,填入本机配置;
- 用转换器检查、转换并做完整性验证;
- 把结果放进 RDR2 PC 版 Profile,先关闭云同步测试,成功后另存一个新槽位。
第一步:用 xbcsmgrrev 下载 Xbox 云存档
下载工具使用 LukeDevsE/xbcsmgrrev。它不是 Rockstar 或 Microsoft 官方工具,建议先阅读其源码,只从项目自己的 Release 下载。
安全登录原则
xbcsmgrrev 使用微软的设备码登录流程。正确情况下,程序给出短设备码和微软登录地址,你在浏览器的微软官方域名中登录并确认授权;不要把微软用户名、密码或验证码输入第三方程序窗口。这样第三方程序拿到的是授权令牌,而不是你的密码。
为了降低风险,建议使用完后:
- 退出工具;
- 删除它在本机保存的 refresh token/缓存;
- 到微软账户的应用权限页面撤销此次授权;
- 不分享下载日志,因为其中可能包含账号标识、容器名或令牌。
下载操作
- 在一台 Windows 电脑上解压并运行
xbcsmgrrev; - 按界面提示选择登录,在浏览器打开它给出的微软设备登录网址;
- 核对浏览器地址确实属于微软官方域名,输入设备码并授权 Xbox 账号;
- 在游戏列表中找到 RDR2,枚举 Connected Storage 的容器;
- 每个顶层容器分别下载到一个新的空目录,不要只挑看起来最新的单个文件;
- 确认槽位目录里同时存在
Save Game Data和Save Game Header; - 把所有
SRDR...槽位目录放在同一个目录下,再打成 ZIP。不要改槽位名或内部文件名。
转换器会递归查找 ZIP 中的槽位,所以外层多一层导出目录没有关系。缺少 header/data、路径异常、重复槽位或结构不一致时会直接拒绝转换。
第二步:准备本地 key 配置
转换需要两把 Rockstar 游戏层 AES-256 key。为避免在新仓库和 Release 里再次分发可能引发投诉的密钥,项目没有内置、复制或下载 key,只告诉用户原始公开资料的位置:
- Xbox key:在 2013 年 GTA V Xbox 360 Save Block Editor 源码帖中查找
GTAV=; - PC key:在 HTOS 的
rstar_crypt.py中查找PC_KEY。
这里不展示密钥正文。你取得的每一项都应是 64 个十六进制字符(32 字节)。在 GUI 中点击“创建空白配置模板”,填成:
xbox_save_key = "这里填 64 个十六进制字符"
pc_save_key = "这里填 64 个十六进制字符"
配置只放本机,不要提交到 GitHub、Issue、聊天、截图或网盘。程序还支持把 rdr2-converter.toml 放在可执行文件旁的便携模式。
第三步:转换与验证
- 从 Release 下载与你系统相符的 ZIP,并对照
SHA256SUMS.txt; - 解压运行 GUI,选择由
xbcsmgrrev结果制作的 ZIP; - 选择 key 配置,先点“检查存档”;
- 选择一个尚不存在的输出目录;
- 点“转换并严格验证”。
成功后会得到 SRDR30000 等文件以及 conversion_manifest.json。输出目录必须不存在,是为了避免误覆盖原文件;转换会先写入临时目录,全部验证成功后再原子改名。
本工具不是简单地“换个文件头”。它会:
- 检查 Xbox atom header 的版本、长度、标题与时间戳;
- 用 Xbox key 解密,并确认主体是合法的
RSAVv3; - 检查 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>
建议这样做:
- 退出游戏与 Rockstar Games Launcher;
- 完整备份
Profiles; - 暂时关闭 Launcher 云存档;
- 复制转换后的
SRDR...文件,不复制 manifest; - 启动游戏,优先加载最新的手动存档;
- 成功进入后立刻另存到一个新的 PC 手动槽位;
- 退出游戏,再恢复云同步;遇到云端/本地冲突时选刚生成的新本地存档。
Xbox 与 PC 的成就、在线角色、平台账号状态不会随剧情存档一起迁移。个别版本差异或 DLC 状态仍可能令游戏拒绝某个槽位,所以务必保留原始备份。
工具为什么不需要你的账号
账号登录只发生在 Windows 上的 xbcsmgrrev 下载阶段。转换器本身不登录 Xbox、不包含 HTTP 客户端、不上传存档,也不会把 key 写入日志或 manifest。源码公开,核心转换逻辑在 src/lib.rs,GUI 只是本地文件选择界面。
这套方案把两个风险面分开:下载工具只负责取得你有权访问的 Connected Storage;转换器只处理本地 ZIP。即使如此,第三方工具仍然需要你自行评估,设备码授权用完即撤销是比较稳妥的做法。
免责声明
项目与 Rockstar Games、Take-Two Interactive、Microsoft、Xbox 及 xbcsmgrrev 作者无隶属关系。请只转换自己有权访问的剧情存档;游戏更新后格式可能变化,任何操作都应以备份为前提。