【FF2】易懂的静态修改图文教程

2007-10-07 04:51 | セフィロス

想在这里写一帖基本的静态修改的图文帖子,其实这类修改是相当得没有技术含量,只是让没有接触过的朋友熟悉一下静态修改的套路罢了.



我个人之前在天幻写过FF的几个系列修改贴,清一色的都是初级的动态修改.这类修改就是拿来修改器,明文数据用精确扫描,模糊血条用低阶扫描,扫它个100遍啊100遍,大概就得到两三个结果,每个结果再扫荡一下,就揪出真身恶贼来了,然后一通恶改,打完收工.听起来就是玩"清洗".这是修改的初级境界.



静态修改结合汇编语言,在真身恶贼的必经之路上埋地雷,一旦踩雷,就立刻偷偷跟着那个倒霉的一瘸一拐的真身恶贼,杀进他的老巢,一通恶改天翻地覆,打完收工.听起来就是玩"尾行"...这是中级境界




那么高级境界就是用尾行一样的静态修改,顺藤摸瓜,找出更多意外的好玩的修改新结果出来.
比如最终BOSS战,BOSS打得太凶,所以你决定用初级修改的动态修改,锁定自己的血量当一次小强.但是BOSS实在太猛烈,你满血9999,BOSS一巴掌拍你99999,秒杀,趴地上还欠费90000.你纳闷修改器不是锁定了血量吗,怎么还会挂掉呢.奈何修改器再怎么高级都是需要刷新周期去刷一次血量的,比如0.05秒检查一次你的血量是不是9999,多退少补,每隔0.05秒,发现你血量5000,那么改到9999,发现你血量10000,那么改到9999.可是BOSS的大巴掌扁你只要0.01秒,等修改器的0.05秒赶到案发现场,嗟夫!晚来一步!!打烊收摊鸟~~~!!!于是你痛心疾首,找来无数汇编教程一阵悬梁刺股,神功大成.你醒悟了,找到罪恶的巴掌拍到你的脸蛋之前,把扣血的那条命令给删除了,这下好玩啦,BOSS的巴掌挥舞得像神功874,可你吹着口哨戴着墨镜纹丝不动,羞得BOSS到处找日本刀像来一下自裁.你兴头上来,为什么不让BOSS对你礼貌点呢,于是你再次经过汇编的跟踪,找到了BOSS伸出罪恶巴掌的那一刻之前,动了一下手脚,从此这个伤心的BOSS对你非常礼貌,再也不是张牙舞爪,而是温柔的给你按摩,给你捶背,给你加血...这三个境界就是修改游戏的全流程



静态修改说白了,就是在程序正常进行的流程里做手脚,"你不能,我能叫你能"(翁帆名言)这就是静态修改的第一原则.比如原程序:
我的情敌非常帅,还很有钱,地位超然.
那么跳转到100行:
100 无数美女暗恋他,包括我未来的老婆.


真是令人伤心的情景哪.






幸亏我有改变历史的能力,那么新程序:
我的情敌非常帅,还很有钱,地位超然.
那么跳转到105行:
105 他上街被狗咬,蹲坑没带纸,是个女人都恨他,暗恋他的全是同志.


人生真美好.




别问我为什么程序不走100却走到了105这一条,讲理由就不是汇编修改.

开始严肃的进入正题吧.




下文将要对FF2的买卖进行修改,不像我们正常游戏那样买到了装备但扣掉了G,这次修改是要实现这个目标:不仅不要钱,还倒贴...

下图是FF2游戏新开始的防具店,我们这时候只有初始的400G,我们此刻打算购买一个价值50G的盾牌.



没有碰到国庆黄金周打折优惠活动之类的意外,盾牌到手,钱货两清,公平交易,友谊长存.




在开始逆天的不符合经济学定律的修改之前,需要对用到的软件工具进行一下介绍.所有的用到的软件都在最后提供下载地址.

模拟器是VirtuaNes-debugger.带有debug功能,已经相当得难下载到了.

点击"RAM",可以调出内存查看器,最终就是用修改内存的方式实现修改的,只是我们目前还不知道密密麻麻的具体数据里到底哪一个地址是我们需要去改动从而实现目标的.



点击"DEBUG",可以调出调试器,这是这个模拟器最重要的功能.



界面上提供了4种下断点的方式,各有长处,在这次修改中,我们将要用到"注释内出现XXX则暂停游戏"这种方式,也就是其他类型的修改器里面的"如果有写入该地址的动静则断点"方式.除了断点方式,主要就是程序的代码显示列表,可以通过程序语句的意思来知道程序是如何进行一笔买卖的.




下面就开始讲述修改的思路了.我个人修改过一些游戏,深深的体会到,修改游戏,思路和突破口排在绝对重要的位置,其二才是各种工具软件的选择.一个精妙的思路,可能远远胜过无论如何优秀的修改器带来的便利.



我们想要修改倒贴的买卖方式,那么直接想到的就是程序要和我们钱包里的G打交道.你买到了装备,店家的爪子也已经伸进了你的钱包里.所以我们在钱包这个位置上藏一个老鼠夹,装备我们是要的,但是你的爪子伸进来的时候我们也要夹住你,然后在顺着你的手把你的G给夺回来.




那么我们现在要做的事情就是:我们的钱包在游戏内存里是哪个位置,否则我们空有老鼠夹都不知道放哪里去.

于是开始了查找金币地址的工作.在菜单里打开修改器,(或者直接按快捷键Ctrl+Home)



紧接着就出现了如下界面:



步骤1:你需要选定内存的范围,还有搜索数据的长度.1个字节最高只能是255,我们拥有400G不算多,也超过一个字节表示的范围了,所以需要用两个字节来表示的范围(65535);至于用10进制还是16进制,应该也不难理解,选择10进制你就输入400去搜索,选择16进制,你得人工将十进制的400转换为16进制的190,建议还是10进制算了,否则16进制算来算去麻烦不说,放内存里还要颠来倒去麻烦得很.

步骤2:搜索之前点击一下"开始",表示一个新的搜索任务开始了.所以一个任务你认为还没搜索完成,就别再去点这个"开始",否则就是重新开始搜索了.

步骤3:输入你要搜索的数据,点击"搜索",速度非常快,效率远远比金山游侠之类的通用修改器高.像金币这种简单地址直接一次找到唯一一个结果,"601C",很强大.

作为比较初级的动态修改,这一步完成就表示离成功不远了,你只要打开内存查看器,找到地址"601C",把内容改成你所要的,你就会发现游戏里的金币已经改变了.而我们这里是要做静态修改,所以不走寻常路.

知道金币地址是601C之后,我们现在就明白了,店老板的爪子是一定会伸进到610C掏钱走人的.所以我们需要在610C那里放老鼠夹.这就用到了模拟器的debug功能了.



步骤1:注释内出现"601C"暂停
步骤2:点击"确定"

现在我们回到游戏去,买那个价格50G的盾牌,盾牌还没到手,就听到一声惨叫...(原来是先付钱后拿货啊)



老鼠夹比F-22战斗机发射的对空导弹还要精准无误的夹住了老板的爪子,这一刻所有的情景全部瞬间凝固,有点像黑客帝国的风格.只有你这个有能力改变历史的主角还能活动,还能修改.


一堆汇编语句出现在了debug的窗口里,我们可以看到这几句:






简单分析一下以上这段代码的意义.可见601C,601D,601E这并列的3个字节就是我们金币的地址,可见FF2金币上限是FFFFFF,即十进制的"16777215"(这一千多万我可没打到过....),而80,81两个并列的地址是装备的售价,可见FF2里面没有超过卖价是FFFF(即65535)的装备.程序先读取了装备卖价的低字节数据,让你钱包里的低字节数据减掉,然后是依葫芦画瓢,卖价的高字节数据让你的钱包再瘪一点.一次减一遍后,才会给你交货.于是我们可以毫不讲理的对"减少"这个命令做一下文章,做什么文章呢?当然是把"减少"改成"增加"啦,这样不就能实现倒贴了啊?!




显然,这里需要涉及到6502汇编的概念了(使用手册也有提供下载).我们把关键一句拿出来看看:

909E E5 80 SBC $80 ;A-=0x32 <--地址80的数据是32,变量A-32的值再写入A

SBC就是一个减法命令,我们将其改成加法命令"ADC"就可以了.作为汇编的基础知识,SBC只是一个便于记忆的符号,我们人类看着方便点,但是计算机的内存数据块里面那是绝对找不到"SBC"这三个字的,你能看到的只是"E5 80",就像我们中国人看到"你好"是打招呼,对美国佬来说转换成"Hello"他们才理解中国人在表达什么意思.因此我们要修改SBC变成ADC,也得学好外语六级,直接用"ADC"的外语"65"来替换表示"SBC"的"E5".(外语就在使用手册里,很傻瓜的一张列表,对着改就是了...)所以我们要把所有减法统统改成加法就皆大欢喜了,那么这个外语"E5 80"在内存的什么位置呢,就是前面写着地址提示的"909E",跑到内存查看器那里去改好了,最后修改得到如下代码:













然后点一下"执行",否则老鼠夹还是紧紧夹着老板的爪子,时间处于静止状态呢,你都无法切换回游戏去.点下"执行"之后,我们再来看看被老鼠夹教育过后洗心革面的老板是怎么带着全新的觉悟和我们做生意的.






嗯,不错,老板看来是个可塑之才嘛,至少看出了我们是东街区大顺警察局城管大队的人马哪.





到这里,至少在重启动前这个修改后的FF2都是倒贴买卖的.至于是否要永久将这个FF2游戏文件修改成这样,那需要用到老牌的UE修改ROM,找到"E5 80"的位置,改成"65 80"然后存盘,从此这个rom只要进店里去买卖就是收保护费去的.




可见,真的没什么技术含量,我们要修改金币多多益善,只要初级的动态修改锁定一下就能实现,你说"钱越拿越多"和"钱永远花不完"那个有意思?一样的没意思.静态修改看上去比较好玩,可是一个断点设定在哪里,还不是一样要初级的动态修改来提供?经常看到一些修改论坛里有人写静态修改的教程,寻找那个突破口下断点的时候就是一句"去EC里找,有现成的",很令人失望.毕竟一个静态修改最终还是要用来寻找初级的动态修改极难找到的地址,比如"FF8的奥丁必出,管他是不是已经死了一次"这种要求,你拿哪个版本的EC去找突破口下断点?没一个版本的EmuCheat提供了这样的作弊码.因此,还是需要靠自己多多积累初级的动态修改经验,经验越多,机会越多,不应该以为初级动态地位卑微就藐视之,很多时候动态修改也能发现很广阔的一大片天空.


帖子里涉及到的软件下载地址:http://qxqpig.ys168.com/