我最近改写了我和女友一直在玩的电子游戏的保存游戏文件。在尝试以几种不同的方式恢复文件(游戏并没有擦除而是覆盖了保存文件)之后,我辞职了,尝试手动重建保存数据。

过去使用Ollydbg来设计来自crackmes.de的二进制可执行文件,但这是不同的,我觉得自己有点儿没精打采了。 .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


我想弄清楚的是这些字节代表什么以及如何操纵它们以使我修改保存数据的主体而不抛出游戏中出现错误错误。

谁能帮助我找出游戏如何校验文件并反向工程该过程,以便我可以创建有效文件?

这是四个保存数据文件的存档。

Troy。

评论

“ CRC和校验和可互换吗?”一般而言,没有,尽管大多数人都不会费心去改变。校验和具有更广泛的含义,其中包括作为特定校验和功能的CRC变体。

#1 楼

由于反向工程中的变量,这是一个很难回答的问题。

我建议您从以下内容开始:


开始游戏
获取一些信息硬币或保存的任何东西,然后保存游戏。
重新启动游戏并获得更多硬币并保存游戏。
将新的保存替换为旧文件。
是否加载?请参阅答案1。否则,答案2。

答案1
您修改后的游戏文件版本格式错误。
我建议您将CreateFile和ReadFile断点,并逐步调试程序,看看如何读取每个字节。当然,这可能成为一项艰巨的任务。

答案2
游戏文件校验和可以存储在文件系统或注册表中的某个位置,以确保文件的数据完整性。您可以使用诸如Process Monitor之类的工具来帮助您找到该文件,也可以在CreateFile和ReadFile上设置断点并手动进行手动搜索。
http://technet.microsoft.com/zh-CN/sysinternals/ bb896645.aspx

让我知道如果您得到答案1或2,那么我可以在更深入的细节中扩展您的答案,诸如此类。

我希望这将是您解决问题的一个好起点。

评论


我照你说的做了使用新的保存文件开始游戏,取得了一些进展,保存了该保存文件的副本,取得了一些进步,还保存了该保存文件的副本。只要能够将游戏正确地重命名为“ ssr_save.bin”,我就可以在保存文件之间交换内容。我什至可以换成其他配置文件完全不同的保存文件。一切正常。

–TroyDowling
2014年7月10日在18:15

我忘了包括,这是ProcessMonitor在加载保存文件时游戏活动的输出日志。我将其过滤为游戏的PID。链接是所有相关的行。

–TroyDowling
2014年7月10日在18:20