我最近覆盖了我和我女朋友一直在玩的视频游戏的保存游戏文件。在尝试通过几种不同的方式恢复文件后(游戏没有擦除而是覆盖了保存文件),我不得不尝试手动重建保存数据。
过去我曾使用 Ollydbg 使用过来自 crackmes.de 的逆向工程二进制可执行文件,但这次不同,我觉得我有点不知所措。
游戏 (Sonic All Stars Racing) 使用单个 .bin 文件来存储四个游戏内帐户的记录。使用十六进制编辑器、笔和纸,我开始绘制文件结构并定位各种记录的偏移量。
我遇到的问题是,每当我对文件进行修改,大小相同或其他方式时,游戏都会声明保存文件已损坏并且无法使用它。我认为这是因为游戏正在对数据实施某种形式的 CRC/校验和,以防止使用损坏的文件。(旁白:CRC 和校验和是否可以互换?)
游戏将数据保存到一个名为的文件中,该文件"ssr_save.bin"
负责四个游戏内配置文件。
我所做的是通过在创建每个配置文件后备份保存文件来创建四个不同的保存文件。
每个文件大体相同。727040 字节大。唯一的区别似乎是前 12 个字节(包括 0x00 到 0x0B)。这前十二个字节在四个文件之间是完全唯一的。
但是,在该范围内似乎有多个数据对象,因为 12 的中心有 3 个零字节。
File 1: 19 8E 0B 60 13 00 00 00 F9 3E 00 B0
File 2: 93 7B 0F 36 13 00 00 00 B6 35 02 9B
File 3: 69 71 1B 14 13 00 00 00 A1 30 08 8A
File 4: D9 47 32 E8 13 00 00 00 D9 9B 13 74
我想弄清楚的是这些字节代表什么以及我如何操作它们来让我修改保存数据的主体而不是在游戏中抛出损坏错误。
任何人都可以帮助我找出游戏如何对文件进行校验和并对过程进行逆向工程,以便我可以创建一个有效的文件吗?
特洛伊。