aethersx2模拟器吧 关注:15,231贴子:98,584

PS2游戏的修改与金手指的制作

只看楼主收藏回复

这次大概会讨论下内存数值查找与修改、金手指的制作、代码的查找与修改、把修改代码改入游戏ROM中
准备用到的软件,pcsx2(模拟器)、Cheat Engine(内存查找)


IP属地:广东1楼2022-01-08 19:47回复
    先从最简单的开始,示例游戏是重装机兵-沙尘之锁,这第一段在手机上应该也能做到(我没试过)
    如图右上角金币数量36169G,来尝试更改它

    打开CE,如图1、2、3步骤打开模拟器进程


    IP属地:广东2楼2022-01-08 19:50
    回复
      如图输入36169后扫描(不勾十六进制)

      如扫描结果出现多个地址分不清哪个是,就尝试在游戏内活动/改变下金币数,然后输入改变后的数量再次扫描,直到找到为止



      IP属地:广东3楼2022-01-08 19:56
      回复
        我找出的地址为7FF7807D0A64,其中的07D0A64是游戏机的内存地址,前面的7FF78不用管

        你可以双击数值更改它,比如65535,要十六进制显示可以右键菜单选”以十六进制显示


        IP属地:广东7楼2022-01-08 19:59
        回复
          支持,是手机上能用那个内存修改软件吗?


          IP属地:广东来自Android客户端8楼2022-01-08 20:03
          收起回复
            上面讲了内存数值修改的金手指,如果你已学会,那就已经能以此类推动手制作自己的金手指啦
            现在说下内存搜索范围,CE中的起始与结束地址即是内存搜索范围,PS2的主内存为32M那么应该是从起始地址到1FFFFFF结束,如果你的数据不好搜索,减小范围会提高效率
            基址"pcsx2x64-avx2.exe"+AD2B078,指向游戏机主内存起始地址(不同模拟器版本可能不同不通用) ,基址可以通过刚刚找到的金币地址7FF7807D0A64去掉右边7位数后搜索(7FF780000000)得到,搜索结果显示绿色静态地址的就是了



            IP属地:广东9楼2022-01-08 20:07
            回复


              IP属地:安徽来自Android客户端10楼2022-01-08 20:09
              回复


                IP属地:重庆11楼2022-01-08 20:14
                回复
                  查找方法
                  我们可以用之前的搜索方法找到经验值的地址,经验值与HP、等级这些都属于角色属性所以它们可能都放在附近,当你找到其中一个时便可以在CE内存窗口中进行查看,右键内存地址,浏览相关内存区域,内存窗口右键菜单切换适合的显示类型



                  IP属地:广东12楼2022-01-08 20:18
                  收起回复
                    调试界面的简单介绍,不需要现在看明白


                    IP属地:广东15楼2022-01-08 20:27
                    回复
                      这次我们来到道具店

                      如图金钱是65535,切换到调试器
                      点击断点,添加内存断点,输入上面得到的金币地址07D0A64,取消Read读的勾,点OK


                      添加后的断点列表是这样的


                      IP属地:广东16楼2022-01-08 20:35
                      回复
                        然后向老板购买一个10G的道具

                        正常的话游戏会中断,代码理应会停在将要改写金币数量的地方

                        根据MIPS指令集,Beqz是条件跳转指令,不是我们要的,下一条sw是存字指令, sw a1,0x4(s0)意思是把寄存器a1的值写入到寄存器s0的值+4的地址中,a1跟s0都是寄存器

                        在左边寄存器列表可以看到a1跟s0的值,此时a1是FFF5,这个值是不是眼熟,这就是之前0xFFFF金币买了10G道具后的值(FFFF-A=FFF5);而s0这个值7D0A60+4后就是07D0A64金币地址,可以确定这条就是修改金币的代码了



                        IP属地:广东17楼2022-01-08 20:48
                        回复
                          如果我们要它不扣金币,只要在这里右键这条代码改写汇编码

                          改成nop就是什么都不干

                          改完的样子

                          改后之后右键断点edit编辑,把启用的勾去掉再点OK停用断点

                          然后点左上角的Run运行回到游戏,去尝试下,无误的话就已经可以在这反复零元购了


                          IP属地:广东18楼2022-01-08 21:01
                          回复
                            接下来是把刚刚改的代码做成金手指,按下tab键可以让调试器显示地址与值

                            写成金手指的话是这样的

                            如果你已经学废了,那么就可以更进一步啦, 零元购可能不太够意思,后面会讲下如何打五折


                            IP属地:广东19楼2022-01-08 21:14
                            回复