nes吧 关注:7,093贴子:36,327
  • 10回复贴,共1

【转贴】关于游戏内存代码修改的一些浅见

只看楼主收藏回复

作者:侍影香寒
转贴:JrWatson


IP属地:山东1楼2011-12-05 20:07回复
    第一部分,纯数值型查找与修改
    难度:☆
    实用度:☆☆☆☆
    ========================================
    这一类型的内容比较简单,是纯数值型的,一看就懂。下面简单举例,RPG游戏里的金钱数,比如DQ,比如FF,比如一切可以比如的东西,金钱数为多少,你就搜索多少,一般来说,比较简单。如:金钱为256,则搜索256,为123,则搜123。
    这个地方只要注意一点就可以了,尽量避免数值0及256等数值,因为一般的内存数据在存储的时候,都是按十六进制写入的,如果你只查找双字节,那么0和256在数据中的后两们都将是00,则无法查到正确的值。这样应该避免的数值是有规律的,一般来说是16的2N次方,N为自然数。如果你在第一次搜索,不搜索0,那么,如果遇到有数值为256的,也应该避免。
    ===========================================
    在这里我主要讲的是内存数据变化的原理及查找方法,修改方法略讲。利用这一方法,我们可以修改如下效果:
    1.金钱数2.攻击力守备力等等3.子弹数等等


    IP属地:山东2楼2011-12-05 20:09
    回复

      第二部分,图形转数值型代码修改
      难度:☆
      实用度:☆☆☆
      效果:生命无限、子弹道具等无限
      ===============================================
      关于这一部分,我以大家所熟知的“人间兵器”游戏为例,谈下血量的修改。跟楼上相比,多了一步,就是将图形转化为数值,如:人间兵器默认为2血,两个圆点,则数值为2,如只有一个圆点,则数值为1。
      要注意的是,有些游戏,显示的是剩余数,有些是拥有数。如冒险岛第一代,画面左上显示为2人,实际搜索应该搜索数值3.另外,有极少数游戏,如《机械战警一代》,内存计算血量是按伤害量来计算的,即满血时,内存数据为0,按受到的伤害,依次增加。注意至于像双截龙2这样的游戏,其血量虽然以方块形式标出,仍不能直接数方块数。因为,某些轻攻击,虽然对血量有损伤,但在方块数目上,没有减少,针对这样的游戏,显示量不代表具体血量的游戏,应该按模糊查找处理。后面会介绍。至于像洛克人这样的游戏,血量值虽然多,并且受到的伤害所减少的血量大小不一,但是,每次受伤,在血量上都有明显的标识变化,所以可以按数血的方法来计算。如果没有记错的话,洛克人1代是28血,7代是27血。
      ====================================================


      IP属地:山东3楼2011-12-05 20:09
      回复

        第三部分,可视增减的图形类非数值型数据查找与修改
        难度难度:☆☆
        实用度:☆☆☆☆☆
        =====================================
        非数值型,即不可数型,相当于英语里的不可数名词。如常见的格斗类游戏里的血量,你能说它有多少血吗?虽然我们不能准确说出它有多少血,但是我们可以看得出它的增减变化。
        =====================================
        这里要用到的是,模糊搜索,下面以大家常见的四人街霸为例,同侧的人(不论角色),所在的内存地址都相同,首先,出场时为满血,即开始模糊搜索,挨一点血,再搜索减小数值,然后被KO,搜索0,再反复,一般来说,四五次之内可以找到准确的地址。
        要注意的是,不能首先搜索KO时的数值0,否则,有可能满血时数值为256的话,你将永远查不到正确的代码。总结一句就是,看增加再搜索,不变就搜等于号。


        IP属地:山东4楼2011-12-05 20:10
        回复

          第四部分,倒计时时间锁定及修改
          难度:☆☆☆
          实用度:☆
          ====================================================
          你曾经因为时间不够用而OVER吗?那么这个方法应该可以帮你了。我以超级马里奥1代为例,注意,虽然上面写了有时间的数值,可是,此种情况仍属非数值型,因为虽然实际标为秒数,在内存里是以MS(毫秒)计数的,由于毫秒很短,为一秒的千分之一,几乎不可数,所以,仍为不可数型。同样的,进行模糊搜索,时间是不断递减的,那么在模糊搜索的时候,就一直搜减小数值就可以了,第一次仍不可搜0,原因如上。在时间完全终止时,可以搜索0,然后,就随意修改了。有的EMUCHEAT修改器可以限定范围,至于这个范围,为时间开始时,剩余时间换算成毫秒计数。


          IP属地:山东5楼2011-12-05 20:10
          回复
            第五部分:效果限时类非数值型代码查找与修改
            难度:☆☆☆☆
            实用度:☆☆☆☆
            可以达到的效果:无限隐身等
            ===========================================
            曾经,你因为敌人太强而苦恼吗?是否感到,好不容易得到一个无敌,效果却只有一会儿?那到这个可以帮上你了。
            ===========================================
            同样,以超级马里奥1代为例,讲讲隐身和五星无敌状态的保持。当效果处于非激活状态时,内存默认数据为0,而当效果被激活时,内存就从一个固定的数值(实际上是计时单位,单位为毫秒)开始减少。针对这种情况,搜索方法应该手快,因为,隐身的时间本身就短(一般不到十秒),在此之内,应该完成至少三次搜索。至于模糊搜索初始化,我认为应该从效果激活的瞬间开始,然后,下一个瞬间,搜索数值减小,再等效果消失,搜索数值0,反复搜多次0之后,再重复如上动作,一般可以在1分钟内锁定目标。
            ==============================================
            在这里啰嗦一下,修改要点,注意修改时,任意的非零数值都可以,建议浮动范围在17~255这之间。如果你是想达到隐身无敌效果,在修改之后,看不到人像,那么,请换一个数,注意奇偶性,即,如果奇数看不到,则换成偶数,偶数不行则换成奇数。一般来说,偶数的成功率较大。


            IP属地:山东6楼2011-12-05 20:11
            回复

              第七部分 逻辑值修改法
              难度:☆☆☆☆☆
              实用度:☆☆☆
              ===========================================
              首先弄懂两个逻辑值,1和0,1代表是,0代表否,1代表有,0代表无。
              ==========================================
              具体举例,以超级马里奥为例,无敌为1,非无敌为0,隐身为1,非隐身为0,有子弹为1,没子弹为1,以此类推。以人间兵器为例,有炸弹为1,无炸弹为0.
              ================================================
              不过这种情方法修改,易产生逻辑错误而死机,并且 不好操作,需要反复排查才可以,比较麻烦,对于一些找不到修改门路的,可以用这种方法寻找代码地址。针对逻辑值查找法,需要注意的是,运用场合。
              首先,A和B不可能同时出现,但是A和B必须出现一个,这样,才可以使用逻辑查找法。同一个内存地址,不可能同时存在两个数值,因此,对于可以同时发生的事情,不能在单一地址上寻找变化。再举个例子,洛克人1代的剪刀弹,要么就没有剪刀弹,要么就有剪刀弹,没有第三种情况,第二,本身属于剪刀弹的位置,要么空白,要么就有,不可能有其它弹把那个位置占领,因此,可以用逻辑方法查找。再举个反例,DQ3,第一个人道具的第一个位置,不可能同时存在两个道具,满足第二个条件,但是,这个位置可以有不同的道具,超过两种情况,因此,不能用逻辑法。


              IP属地:山东7楼2011-12-05 20:12
              回复
                第八部分 道具的复制与修改
                ====================
                难度:☆☆☆
                实用度:☆☆☆
                ====================
                关于道具的复制,需要有第七部分的知识作为基础。需要满足如下条件:①同一位置可以有不同的道具②相同的道具可以在不同的位置出现。以大家所熟悉的DQ3为例。首先复习下上一部分所讲的内容,0表示无。以复制药草为例,首先,把物品栏清空(这样的目的是为了做得快些),搜索0,然后,买下药草,搜索数据变化,再走几步,数据不变,再把药草吃了,搜索0,然后再走几步,再搜0.再买下药草,数据变化,最后,把药草扔了,搜0……
                找到地址后,就可以开始复制了。
                ====================================
                A,自身复制法,自己的物品栏里要出几个药草,怎么办,一般来说,这样的内存地址是挨着的,比如,地址为034F,的数据为12,那么,请在地址为0350的位置,数据也改为12即可,0351同样改为12,这样,你就可以拥有很多东西了。
                =====================================
                B,他人复制法,首先把自己的那个地址数据锁定,然后,再把药草给其它人就可以了,自己的药草还在,而别人也有药草。如果觉得比较慢,要大量复制,怎么办,一般来说,相同的物品,所代表的数据是一个固定值,出现在不同的位置,只是内存地址变化了而已。比如说,你已经找到勇者的药草地址为034A,数值为15,那么,把勇者的药草给战士,初始化数据后开始搜索15,这时候,再把勇者的数值解锁,再给一包药草给战士,这样,战士就有两包药草,最后,把勇者的药草全扔掉(先记下地址和数据),再次搜索15,注意看内存结果的地址,有相邻数据的地址肯定是了,比如你找到两个相邻地址0512和0513的数值都是15,那么,好,请把0512.1513.0514.0515……这些数值都改为15,就可以了。
                ======================================
                至于物品修改,大家可以试着修改内存数值,一般来说,向相邻的方向修改,比如药草为15,改为16,就成其它的东西了。另外,再提一点,类型相似的物品,代表的内存代码也相邻。所以,改的时候,不要改得太离谱,以免卡死。
                ======================================


                IP属地:山东8楼2011-12-05 20:19
                回复
                  电玛神D


                  IP属地:上海10楼2011-12-06 00:17
                  回复
                    该用什么修改器啊,亲


                    11楼2013-03-20 19:48
                    回复
                      嗯,按专业的角度来看是八门神器


                      来自手机贴吧12楼2013-06-16 17:44
                      回复