危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18787917

用WinHex来修改《仙剑奇侠传》

危险漫步最近在玩《仙剑奇侠传4》,相信这么经典的国产单机游戏不少人都玩过吧。虽不是什么新游戏。这游戏画面效果还算可以,剧情挺感人的。玩的过程觉得打怪升级太慢了,于是就萌生了修改游戏的念头。说到修改游戏,大家一定会马上想到“金山游侠”吧,但我这里并不用到这款软件,而是使用WinHex来修改游戏存档的方法。

首先进入到《仙剑4》的安装目录,就会看到一个名为“save”的文件夹(save即保存,存档的意思),进入后就能看到一些图片和后缀为.dat的编号文件,这些编号文件就是存档文件了,大部分单机游戏的存档文件都在游戏的安装目录下,也有一些在文件夹中(路径中的“Username”请替换成你自己的用户名,默认为Administrator),根据文件夹名称一般可以找得到。

接下来运行WinHex,通过点击“文件”——“打开”来载入游戏存档文件0.dat,(注意修改前最好先备份一下存档文件,以免修改失败导致进入不了游戏)。先别急着修改,我们先运行游戏并且读取当前的存档,可以看到人物目前的状态。不如我们先来修改下金钱试试,可以看到当前的金钱数,记录下这个数字,由于WinHex是一款十六进制编辑软件,所以我们要先将金钱数从十进制转换为十六进制。当然,我们用不着这么麻烦地去计算,直接使用系统自带的计算器即可完成进制间的转换,打开计算器后,选择“科学型”,在十进制下输入金钱数,再切换到十六机制,得到数值4802,这数值跟我们前面笔算的结果一样。前面提到的笔算过程只是想让大家顺便了解一下进制间的转换原理。

我们再回到WinHex的界面中,依次选择“搜索”,“查找16进制数值”,在弹出的查找窗口中输入024B。这里估计大家会感到纳闷,为什么输入的不是我们计算出的4802,而是经过部分倒序后的024B呢?其实,这里就涉及到了计算机数据存取的原理了,数据存放方式有正序( Big-Endian)和逆序( Little-Endian)两种(也被称为大尾方式和小尾方式),我们常见的CPU对数据的处理采用的便是逆序方式,所以我们输入的十六进制数值便是024B而不是4802。同样,假如我们计算出的十六进制数值是5CF,那么经逆序转换就成了CF05,这样大家应该明白了吧?

继续我们的操作,在查找窗口中输入024B后点击“确定”,便看到了数据,而且在我们查找的数值前面还看到了“money”的字样,这时就能确定这便是记录金钱数的地方了,下一步就是要把它改成我们想要的金钱数。假如我们要把原来的19202文钱改为1000000文钱,那么就先把1000000转换成十六进制的F4240,再经逆序处理,得到40420F,然后在WinHex左边的窗口中将原来的024BOO改为40420F,再点击一下“保存”,在弹出的确认窗口中选择“是”。最后我们回到游戏中,重新加载存档后就能看到金钱数已经变成了1000000。这下发了,现在咱可是百万富翁了哦,想买什么就买什么了(要是现实中钱也来得这么容易就好了。经测试,钱数最多只能改到9999999,要把这钱花完可是个难题呢,我就是每种装备都买了两件,一件用来装备,另一件用来丢弃……

接下来就是修改人物的等级了,等级是由经验值来决定的,也就是说只要把经验值改得高一点,等级、攻击力和血量之类的属性值也会增加。修改的方法同上,但是在查找到一处十六进制数值后,再按一下快捷键“F3”继续查找,就会找到第二处相同的数值,而且都有”Experience”(经历,经验的意思)的字样。那么这两处要改哪一处呢?其实两处都要改。改完保存后,回到游戏时会看到经验值是变高了,但等级还投变,这时我们只要随便杀几只怪物,待战斗结束后就会看到我们的等级已经飞升了。建议别一次性把数值改得太大,毕竟“孤独求败”的境界也是很寂寞的…

顺便强调一些特殊情况,有时搜索到的十六进制数值并不是我们要修改的地方,这一点可以靠WinHex右边窗口的文本字符串来确认。而有时游戏中出现的数值,在存档中也有可能搜索不到,我曾修改过一款游戏,它的存档没记录人物的经验值,而是记录升级所需的经验值。另外有些游戏存档是经过加密的,这样的话我们是投法修改的(当然,高手除外)。

最后危险漫步想说的是,游戏无限,时间有限,大家偶尔玩游戏放松一下可以,但千万不能沉迷,要以正事为中哦!

相关推荐