目录

单机游戏存档修改

目录

单机游戏存档修改

背景介绍:游戏是仙剑一,剧情在打苗疆三人组之前,目的是修改李逍遥属性从而可以秒杀苗疆三人组的头领。

进入原始存档(存档文件名为1.rpg,位于游戏根目录下),查看李逍遥原始属性,如下图所示:

https://i-blog.csdnimg.cn/blog_migrate/7b471fe6adbeabeac399aa787ac5f363.jpeg

去后山打怪升级。打了一组树怪后,李逍遥属性升级,如下图所示:

https://i-blog.csdnimg.cn/blog_migrate/3f784e0945366f23e912bc35282712c6.jpeg

存一个新档(存档文件名为2.rpg)。为了尽量减少存档之间的变化,存档前回到原场景(客栈门前)。备份1.rpg和2.rpg两个存档文件。用VBinDiff(开源工具,网址https://www.cjmweb.net/vbindiff/)对比两个存档文件,把他们复制到VBinDiff文件夹下,然后用cmd运行VBinDiff:

https://i-blog.csdnimg.cn/blog_migrate/bc2a9555fe8aa949461e6feb876b790a.jpeg

效果如图所示,按Enter键遍历所有有区别的地方:

https://i-blog.csdnimg.cn/blog_migrate/d80963f64629edef3d6bf9838e757a1e.jpeg

遍历一遍之后,发现两个存档文件共有7块发生不同的区域,其中许多地方是flag性质的改变(例如FF变为01,00变成0A),推测他们是一些与属性无关的变化(例如存档时的坐标、树怪被消灭后是否刷新的标记、存档时间等),最像属性改变的区域(可以目测出是数值发生了少许增加),发生在:

https://i-blog.csdnimg.cn/blog_migrate/c21d7d2b305084c0867b36dc3e46c05e.jpeg

虽然VBinDiff支持直接修改文件内容,但是为了以后使用方便,还是人工记下偏移地址和对应的变化:

地址十六进制变化十进制变化推测属性
024402->032->3修行
0250AA->B6170->182体力上限
025C6C->74108->116真气上限
026899->B6153->182当前体力
02746C->74108->116当前真气
02C826->2B38->43武术(疑似,-2)
02D419->1E25->30灵力
02E024->2636->38防御(疑似,-9)
02EC20->2332->35身法
02F822->2434->36吉运

其中武术和防御的偏差,应该是人物装备的影响,推测李逍遥的桃木剑+2武术,他的一身装备+9防御。

为了秒杀BOSS,我们只需要修改武术。从数据的外表看,属性只占2个字节,推测属性值的类型应该是无符号短整型(unsigned short int),则最大值是0xFFFF。

回到仙剑目录,用WinHex修改存档文件2(2.rpg)的偏移地址02C8处为FFFF:

https://i-blog.csdnimg.cn/blog_migrate/ac8855a3e96a2b6ca0a573ca11a46de1.jpeg

保存后重新进入游戏读取存档2。发现武力值变为1了,进入boss战发现攻击力很低,这应该是由于基础武力加上装备加成,造成了最终武力值的进位(溢出)。考虑到装备的+2武力,修改基础武力为0xFFFD,试图达到最终武力的最大值:

https://i-blog.csdnimg.cn/blog_migrate/60db63d6679e98cd3027c3401d764467.jpeg

重新进入游戏,发现李逍遥的武力为5535,推测真实值应该是65535,而游戏只显示了后4位数:

https://i-blog.csdnimg.cn/blog_migrate/ecc7a6241c0c0c2707819daf55a542af.jpeg

进入客栈的boss战,一刀砍出22348(boss的总血量),秒杀boss。

https://i-blog.csdnimg.cn/blog_migrate/6dd25c505e8e1426baf4a30c66930ed8.png

存档修改成功!金钱,物品数量的修改都可以使用这个对比存档文件的方法。如果想做存档修改器的话,可以根据上面列表中的偏移地址做一个小工具。

转载于:https://www.cnblogs.com/zhugehq/p/6486085.html