教程
游戏的存档位置在%AppData%\Roaming\EldenRing\64位steam id\ER0000.sl2
,假设你有一个A账号的存档和一个B账号的存档,你想要把A存档迁移到B账号。
游戏的存档内写入了你的steam id,在加载存档时如果检测到账号id不符或者完整性校验出错就会提示存档已损坏。知道了这一点后,我们接下来要做的就是将A存档的A账号steam id替换为B账号的steam id,并且修改校验和使校验保持正确。为了直接编辑存档,我们需要一个hex编辑器,例如我使用的HxD。
首先需要一个B账号的存档来获取你的新steam id对应在游戏存档中的密文,只需点击开始新游戏创建号任务等进入游戏就可以存档退出了。使用hex编辑器打开你的B存档,跳转到**19003B4
**处,记下从此处开始的16位B账号id密文。
打开A账号的存档文件,进行和上面一样的操作,记下并复制A账号steam id密文,在文件中搜索此16位字符,找到文件中其他的A账号steam id所在处,并一一替换成先前记下的B账号steam id密文。(如果只有一个存档槽位的话,整个文件大概会有两处要修改)观察每处修改的密文所在位置属于的存档槽位,将修改后对应槽位的数据计算MD5校验和,生成的16位校验和填入每个槽位数据区块的前一行(如槽位1,计算从00000310到0028030F数据的MD5校验和,覆盖粘贴到00000300开始的地址处)。注意,extra额外校验区的数据宽度和存档槽位的数据宽度有所不同。
存档的各槽位数据范围和最后的额外校验部分的偏移如下:
1 | slot1 00000310-0028030F md5 00000300 |
修改完成后,另存为同名文件替换B账号下的存档即可。Enjoy!
关于额外校验区的结束偏移地址
发现额外校验区的宽度和其他区不同后,写了个python脚本暴力穷举计算了一下,代码大致如下:
1 | import hashlib |