时间:2014-10-17 09:18:22 来源: 复制分享
偶尔逛逛本吧发现都是在求各种游戏修改方法的。。漫山遍野的小白。。。于是我就奋起讲一点游戏修改的理论吧。[哈哈] 大触可指出错误,手机码字,就不上图了。
话说在前面:本帖方法多用于单机游戏,网游限制太多,本帖不做介绍
首先,我们要修改一个游戏要知道什么叫修改游戏,大家关注本吧就应该知道,我们修改的是游戏数据。
那么我们所要修改的这个游戏数据是什么样的呢?要怎么怎么找到它。
游戏数据跟游戏类型有关,像角色扮演啊模拟经营这类的游戏数据量大一些,可攻入的数据就会多一些,而一些什么动作,竞技类的我们不难想到数据就会不多。
数据保存在游戏内存中,分动态内存和静态内存,动态内存是随游戏进行而时刻变化并随游戏结束而停止的数据,静态内存就是游戏存档之类的文件数据了。
动态修改
目前用的多的就是动态修改了,把修改器后台运行然后运行游戏进行搜索,对此,再搜索,再对此,确定后修改或锁定,比如游戏金钱,资源,体力,道具数量,这是种精确搜索,不多介绍
动态修改还有联合搜索,这个很好用,比如你看到商店有a,b,c三种商品,分别价格为100,200,300那么你就用修改器联合搜索100,200,300中间用逗号隔开,或者100,200,300:256后面的“:256”是间隔,间隔范围在8到4096
搜索出来后再搜索一遍刚才所搜索过的3个价格中的其中一个,目的是缩小范围
当你确定数据后就可以修改的,一般修改为-9999999 什么的,然后购买你的钱就增加了,注意有的时候修改成负数过大会错误,或者无效,所以再试下改成-1还有改成0和1
动态修改介绍下个人认为最好用的功能:模糊搜索
这种方法十分强大,可以在我们不知道数据的情况下对数据进行查找,比如游戏时间,血条,技能持续时间,道具剩余时间,等等会发生变化的数据,
例如:当你释放一个效果为角色攻击速度增加的技能,这个技能会持续一段时间,你在技能效果施加成功的一刹那就暂停游戏(修改器也自带暂停功能,需手动开启)然后模糊搜索,不确定类型的情况下选择自动匹配,等待搜索结束点击继续搜索最小化然后继续游戏再暂停打开修改器搜索选择变小了,以此类推,在技能失效前确定地址
解释一下原理,你的这个技能是一个有时间限制的技能,当你释放技能以后游戏内部增加一个时间轴,开始了倒计时,比如是10秒,10秒后这个技能就会失效,于是我们第一步先模糊搜索一下,后面游戏时间倒计时的原因,这个时间轴缩短了,所以后面就是选择变小了,或者可以在暂停游戏页面不继续游戏而再搜索一次无变化,因为我们没有继续游戏,所以时间轴没有发生变化。
这是一个不断随时间变化而变化的例子,我们也可以修改类似血条的数据,血条我们是看不见的,但是可以通过受到攻击掉血或者吃药补血,可以想象到,攻击掉血,血量下降,吃药补血,血量增加,所以前者数据变化为变小了,后者为变大了
静态修改讲到这,顺带提一下,有些游戏数据的地址是会和实际数据不同的,比如1526的游戏币实际数据为1525,所以,搜索不到可以用模糊搜索解决这一问题
还有,如果游戏有关卡倒计时什么的,在游戏上方或者下方有个倒计时,这是个浮点数据,我们精确搜索时不需要搜索小数点后面的数字,比如52.48我们搜索52就行了
后面我再讲内存修改,先讲静态修改,因为内存修改需要了解16进制
静态修改
首先必须要简单了解下什么是十六进制,话说现在初中都开始学十六进制了,应该不难理解,游戏中我们看到的数据都是十进制,但是打开存档或者内存时可以发现,这里会出现英文字母,十进制是0,1,2,3,4,5,6,7,8,9十个数字,9再往大是0,但是前一位加一,这个大家都知道,十六进制其实一样,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个,后面的A,B,C,D,E,F分别对应10,11,12,13,14,15十六进制的F往大也是0,然后前一位加一
十六进制数据是2个字符为一个字节,每两个字符都是靠在一起形成字节的,一个字节是0到255,2个字节就是0到65535,发现没,用修改器搜索数据时让我们选范围就是这个数字,[喷] 那就说明一个数值的类型受他的最大值影响,比如等级,等级一般以100级为满级,那么他只需要一个字节的位置就能表示,所以数据就是BYTE类型,范围再0~255(就是2个F),如果是是在0~65535的数据(4个F),类型就是WORD,还有一个最大的,用的最多,就是DWORD类型,范围是0~4294967295(6个F)这些出现在修改器中的数据就是受16进制的限制而出现的还有些常用的要多记,比如十六进制63是十进制99,这些都可以用十六进制计算器来算,但是用脑子记一些对你在一大堆内存数据中寻找有用数据有很大作用[笑眼]
十六进制还存在一种储存方式,高低位转化,这是游戏厂商为了防止数据溢出的方式,同时也给修改者一个槛,简单讲一下,比如一个16进制数是1D5, 高低位换算后是D501, 因为前面说过16进制每两个字符组成一个字节,所以要再1前面添一个0补齐,就是01D5,高低位换算就是把数据从高到低重新反过来排列,刚才这个是WORD类型数据,如果是DWORD类型,就要再添2个0,高低为换算就是5D0100,这个在32位游戏中广泛应用
简单了解下16进制和范围,然后开始静态修改吧[太开心]
静态修改前面说过了,修改游戏存档,首先要找到游戏存档文件所在,
一般都在data/data/里面游戏对应的文件夹。也有在android/data/里面
文件夹文件那么多,哪个是存档呢,这个很简单,运行游戏,用文件管理看文件时间就行了
用修改器打开或者16进制编辑器打开,打开后迎面而来的就是一大波16进制数据了,在这里,你也可以搜索数值,编辑修改数值,有人说了,那楼主这和动态修改没的比吧,既麻烦又不实用
接下来讲一下静态修改绝对做不到的一个修改。
在动态修改中我们可以通过模糊搜索对一个空背包的第一个位置不断变化道具再搜索来寻找道具代码(有变化无变化或者变大变小寻找),最后比如我们发现红瓶对应代码为4287,那就让我们买上几个,比如一个背包只带了5个红瓶,把4287转化为16进制是10BF,我们打开静态内存,然后搜索10BF或者10BF05,或者10BF0005因为不知道数据间有没有间隔,所以多变化搜索一下 (高低位换算也要试) ,最后找到这个红瓶的位置,接下来我们就可以修改这个05来修改红瓶数量。但是我们通过观察可以发现在这个这组数据后面有大量的00,聪明的你可能就发现了,这就是背包后面其他位置道具地址,通过添加代码和数量达到凭空修改道具的目的![真棒]
通常很多数据相差不会太远,血量地址旁边经常出现魔法值地址
结合动态的模糊搜索然后用内存修改可以达到很多目的,比如修改人物性别,变化宠物,改变装备附魔等等难以预计的变化