游戏数据的修改目前主要分为两大门派,一派为内存修改,另一派则为存盘文件修改。两大派功夫各有千秋,目前更有兼收并蓄的趋势。这两派功夫到底如何施展,今天笔者就来说一说。
一、内存修改
当年《仙剑奇侠传》风靡全国的时候,笔者偶然在网吧看见一位玩家的游戏画面,其中金蚕王的数量竟然是999个,不由大吃一惊。这金蚕王可是能让角色直接提升一级的宝贝,笔者按照攻略通关时也仅仅只有几个,这位仁兄竟然握有999只,实在匪夷所思。笔者急忙问询如何得来这么多宝物,这位老兄淡淡一笑,在键盘上鼓捣了一下屏幕上便弹出了一个名为“FPE5.0”的软件窗口,原来这999个金蚕王便是拜它所赐。
这个FPE5.0就是一个进行内存修改的游戏软件。在DOS时代这FPE(Fix People Expert整人专家)可是红极一时。到了21世纪的今天,游戏内存修改工具可谓层出不穷。不过如何使用它们来修改游戏,大虾们虽然谙熟于心,但新手玩家却未必知晓,那么请听笔者接着说下去。
1.简单原理
既然要进行内存修改,那么还是先来谈谈它的原理吧。游戏程序在执行过程中,角色属性值的变化会被即时存入内存中的相应地址。要想获取游戏属性存放的内存地址,那就对相应内存地址进行分析,经过分析后得到游戏属性存放的内存地址就是我们需要的东西啦。最后只修改该内存地址的数值则角色的属性值也相应被修改,这样就达到了修改游戏的目的。
2.修改的步骤与工具推荐
确定修改数值→通过修改工具搜索该数值的内存地址→确定该数值内存地址→修改该地址数值→保存修改后的数值(存盘)
其中第三步可能须多次重复第二步才能完成。
内存修改工具,目前使用较广的主要有FPE系列(最新版本为FPE2003)、《金山游侠》系列(最新版本为《金山游侠2004》)、Game Master系列(最新版本8.0)以及《东方不败3》等。它们的修改能力大同小异,笔者认为从搜索速度而言金山游侠较为优秀,从寻址能力而言则FPE较为稳定。当然还有很多玩家自行开发的专门针对某一游戏的内存修改器,它们的使用方法更为简单,可以直接修改而不须搜索内存地址,但是由于仅能针对一个游戏应用,这里就不再赘述了。
举一反三
这些内存修改工具是不是只能用来修改游戏呢?当然不是,凡是软件中涉及数值的地址它们都能修改,比如大家日常聊天的常用软件QQ。我们知道,如果对方QQ设置了身份验证,那么你必须通过对方的身份验证才能加对方为好友来聊天。可不可以绕过身份验证直接和对方聊天呢,这就须要用到内存修改工具了。首先选取一个不常用的QQ号码,例如100001,而对方设置了身份验证的QQ号码为100002。打开QQ后再打开内存修改工具,搜索100001,会得到几个地址,把它们全部重新赋值为100002,勾选自动锁定后回到QQ。此时QQ中的好友名单一片空白,别急,现在退出QQ重新登录。注意此时不要退出内存修改工具,QQ登录也只能通过登录窗口,不要通过注册向导登录。QQ打开后好友名单中100001仍然还在,这时点击好友资料中的更新,就会看到这个号码变成了100002,成功,开心地和他(她)聊聊吧,不要骚扰别人哦。
内存修改的原理还被广泛运用在……D版中。例如臭名昭著的内存注册机,就是运用了内存修改的原理,把正式版注册码赋值到通常是共享版软件的注册码地址中以达到注册的目的,这样的行为是非常不道德的。

图1 找到的地址大概有七、八个,可以都修改为你需要的内容
针对目前玩家越来越频繁地使用内存修改工具来修改游戏的情况,有的游戏干脆就不让内存修改工具发挥作用。在玩这些游戏的时候,一旦弹出内存修改工具,就无法再切换回游戏画面中了,这样便无法对数值地址做多次搜索。即使能够一次性得到内存地址,却因为无法切换回游戏存盘,同样无法达到修改游戏的目的。想要修改这样的游戏,内存修改工具就无能为力了。那应该怎么办呢?
1.简单原理
我们知道,角色的信息都是以16进制代码的形式存放在文件名类似于*.sav的存盘文件里面,只须对这个存盘文件进行修改,即可让角色的信息焕然一新。
2.修改的步骤和工具推荐
确定须修改代码位置→确定须修改信息的代码→将修改信息的代码填入其位置置换原代码
以上第一步和第二步是比较繁琐的过程,尤其是确定信息代码,很多初学者不知道应该从何下手。其实这也没有关系,因为网上有很多著名游戏的物品代码供玩家参考。不过话说回来,笔者认为还是知道一些存盘文件修改方法的好,例如可以以容易查找的数据作为突破口(角色的生命值等),一般其他属性或者道具地址都在附近,这样多次修改测试就能够得到每项属性的正确地址。这是一个让人郁闷的过程,有时位置修改错误会引起存盘文件无法打开,游戏不能正常进行等问题,须要把存盘文件恢复到修改前的状态。目前较受玩家好评的16进制编辑器主要有UltraEdit(下载地址:http://www.ultraedit.com)、WinHex(下载地址:http://www.winhex.com/winhex/index-m.html)、Hiew(下载地址:http://www.serje.net/sen/)等,玩家可以根据自己的喜好自行选择。
知识了解:游戏数据的格式,存储及调用
首先,我们要知道游戏中储存数据的几种格式,这几种格式是:字节(BYTE)、字(WORD)和双字(DOUBLE WORD),或者说是8位、16位和32位储存方式。字节也就是8位方式能储存0~255的数字;字或说是16位储存方式能储存0~65535的数;双字即32位方式能储存0~4294967295的数。
在游戏中各种参数的最大值是不同的,有些可能100左右就够了,比如,RPG游戏中的角色的等级、随机遇敌个数等等。而有些却需要大于255甚至大于65535的数,像RPG游戏中角色的金钱值可达到数百万。所以,在游戏中各种不同的数据的类型是不一样的。
在计算机中数据以字节为基本的储存单位,每个字节被赋予一个编号,以确定各自的位置。这个编号我们就称为地址。
在须要用到字或双字时,计算机用连续的两个字节来组成一个字,连续的两个字组成一个双字。而一个字或双字的地址就是它们的低位字节的地址。现在我们常用的Windows 9x操作系统中,地址是用一个32位的2进制数表示的。而在平时我们用到内存地址时,总是用一个8位的16进制数来表示它。
1.2进制和16进制
简单说来,2进制数就是一种只有0和1两个数码,每满2则进一位的计数进位法。同样,16进制就是每满十六就进一位的计数进位法。16进制有0~F十六个数字,它为表示十到十五的数字采用了A、B、C、D、E、F六个数字,它们和十进制的对应关系是:A对应于10,B对应于11,C对应于12,D对应于13,E对应于14,F对应于15。而且,16进制数和2进制数间有一个简单的对应关系,那就是:四位2进制数相当于一位16进制数。比如,一个四位的2进制数1111就相当于16进制的F,1010就相当于A。
了解这些基础知识对修改游戏有着很大的帮助,下面我就要谈到这个问题。由于在计算机中数据是以2进制的方式储存的,同时16进制数和2进制间的转换关系十分简单,所以大部分的修改工具在显示计算机中的数据时会显示16进制的代码,而且在你修改时也须要输入16进制的数字。
在游戏中看到的数据可都是十进制的,在要寻找并修改参数的值时,可以使用Windows提供的计算器来进行十进制和16进制的换算,我们可以在开始菜单里的程序组中的附件中找到它。
2.单机游戏与网络游戏的存储规则
在单机版的游戏中,要使电脑执行游戏,它首先把重要的数据读入内存。当我们发出存盘命令时,程序自动将有关数据存入硬盘。游戏修改就是抓住这两个环节,或改写内存中的数据,或改写硬盘上的存盘文件。但这在网络游戏中就没有任何用处了。因为我们在网络游戏中所扮演角色的各种属性及各种重要资料都存放在服务器上,在我们自己的机器上(客户端)只是显示角色的状态,所以通过修改客户端内存里有关角色的各种属性是不切实际的。我们知道Internet客户/服务器模式的通讯一般采用TCP/IP通信协议,数据交换是通过IP数据包的传输来实现的,一般来说我们客户端向服务器发出某些请求,比如移动、战斗等指令都是通过封包的形式和服务器交换数据。那么我们把本地发出消息称为SEND,意思就是发送数据,服务器收到我们SEND的消息后,会按照既定的程序把有关的信息反馈给客户端,比如,移动的坐标,战斗的类型。那么我们把客户端收到服务器发来的有关消息称为RECV。看了这些,你不会再用FPE去改《传奇》了吧?
现在要了解的知识也差不多了!不过,有个问题在游戏修改中是须要注意的。在计算机中数据的储存方式一般是低位数储存在低位字节,高位数储存在高位字节。比如,十进制数41715转换为16进制的数为A2F3,但在计算机中这个数被存为F3A2。
举一反三
修改存盘文件仅仅是16进制编辑器应用的很小一方面,在很多领域中16进制编辑器发挥着非常重要的作用。以WinHex来说,它在电脑取证、数据恢复、低级数据处理以及IT安全等领域方面很有用,可以查看和编辑所有类型的文件,及从数码相机卡和系统文件已崩溃的硬盘中恢复被删除的文件或丢失的数据。PCD今年曾经在“实用工具”栏目连载过不少WinHex的系列应用技巧,因此下面只是抛砖引玉。
1.在要求密码的地方得到密码
如今市场上有很多加密光盘,这些光盘的刻录形式较为特殊。它们在放入光驱后会出现一个软件的安装画面并要求你输入序列号,如果序列号正确就会出现一个文件浏览窗口,错误则跳回桌面。如果你是从资源管理器中观看光盘文件就仅仅只有一些图片之类的文件,你想找的文件却怎么也无法看到。这样的加密光盘恐怕大家都遇到过。一旦光盘序列号丢失或者光盘上的序列号根本不对,那我们该怎么办呢?这时可以运行UltraEdit,用它打开光盘根目录下的SETUP.EXE,然后点击菜单上的“搜索”→“查找”,在弹出的对话框“查找什么”栏中填入“请输入序列号”,注意要将多选框“查找ASCII字符”勾选上,回车,在找到的“请输入序列号”后面,接下去的数字就是序列号,这样一张加密光盘便“起死回生”了。
2.显示自己需要的文字
现在还有人使用QQ2000吗?如果你还在用这个老版本的QQ,它里边可是隐藏了一枚彩蛋哦。我们按下QQ界面左下角的“QQ2000”长条按钮,在弹出的菜单里选择“帮助”→“关于”,然后在“关于QQ”窗口对着显示板本号信息的那一行用鼠标左键点击大约10下左右,注意别点击太快,一秒钟一下就行了,然后你就会发现版本号突然变为“给你一千年回忆”。要再次打开这个彩蛋,就须要启动QQ。如果你对这个彩蛋感兴趣,也可以DIY一个自己的QQ彩蛋。方法很简单:运行UltraEdit,点击“打开”按钮打开QQ的主文件QQ2000b.EXE,再点击“搜索”菜单下的“查找”,在弹出的“查找”对话框的“查找什么”栏中输入“B8F8C4E3D2BBC7A7C4EAB5C4BBD8D2E4”。之所以输入这个字串,是因为它就是“给你一千年回忆”的16进制编码。点击“下一个”按钮,怎么样,你发现了秘密所在吧?要想DIY自己的QQ彩蛋,只要将“给你一千年回忆”替换为你想显示的文本就可以了。比方说,你可以把“给你一千年回忆”换为“计算机应用文摘OK”,方法是:点击“文件”菜单下的“新建”,然后输入“计算机应用文摘OK”,再点击“编辑”菜单下的“16进制编辑”,你会发现其l6进制编码。用这个新字串代替原位置的字串,点击“保存”即可。要提醒大家注意的是,你输入的文本最好不要多于8个汉字,否则很容易出错。如果少于8个汉字,多余出来的地方用“00”代替,直到填满8个汉字的位置为止。

图2 16进制编辑器完成这类非加密状态的文本信息修改简直是轻而易举
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
- 栏目列表
-
热点关注

