请知悉:本文最近一次更新为 1 year 前,文中内容可能已经过时。

以下内容完整转载自:超绝可爱陆陆酱 原创发布:【工具教程1】使用Breeze在switch实机上对游戏进行汇编修改

Breeze这款新的金手指软件出来也有一段时间了,相比edizon-se的功能强大太多了,但好像用的人不多。

接下来我举个简单的例子,在不使用电脑辅助的情况下,仅在机器上,进行汇编修改,从数值搜索,到金手指完成的一个完整过程。

前期准备

1、switch端下载并安装Breeze最新版(beta66)

https://github.com/tomvita/Breeze-Beta/releases/

2、修改大气层设置  

文本形式打开SD Card/atmosphere/config/system_settings.ini

在[atmosphere]的末尾添加

enable_standalone_gdbstub = u8!0x1
enable_htc = u8!0x0

这两句

3、机器上打开Breeze,选择settings→Install gen2 fork  安装gen2菜单,安装完成以后,重启机器。

大气层1.4.1可能会出现,按装gen2的按钮灰色的情况。只需要进入switch/breeze目录,找到gen2.zip,解压出来,把010000000000d609复制到 atmosphere/contents下,手动安装,再重启即可。

准备完成,开始修改

使用Breeze在switch实机上对游戏进行汇编修改-pic-1

使用Breeze在switch实机上对游戏进行汇编修改-pic-2

接下来我要改的是月姬格斗最新版(1.4.1),修改cp的过程,也就是修改货币,钱之类的东西同理。

先把数值搜索出来。

使用Breeze在switch实机上对游戏进行汇编修改-pic-3

此时我的CP是6750,然后退回主页,从相册打开Breeze。

依次选择SearchManager(搜索菜单),Search Setup(搜索方式,数据类型u32,搜索条件==)

使用Breeze在switch实机上对游戏进行汇编修改-pic-4

使用Breeze在switch实机上对游戏进行汇编修改-pic-5

使用Breeze在switch实机上对游戏进行汇编修改-pic-6

使用Breeze在switch实机上对游戏进行汇编修改-pic-7

使用Breeze在switch实机上对游戏进行汇编修改-pic-8

接下来选择Edit A 填写要搜索的数值,我这里是6750,填进去,选择Start Search 开始首次搜索

使用Breeze在switch实机上对游戏进行汇编修改-pic-9

搜索速度非常快,比edizon快几十倍,这就是Breeze强大的其中一点。

按下L可以显示搜索的结果

使用Breeze在switch实机上对游戏进行汇编修改-pic-10

使用Breeze在switch实机上对游戏进行汇编修改-pic-11

我这里搜索出来只有3个,如果有的游戏要多次搜索的话,就进游戏让数值变动,再选择Edit A,修改要搜索的数值,用Continue Search(继续搜索),找到你需要的地址为止。搜索数值,什么软件都差不多其实,这里不详细讲了,没什么意思。

由于我之前做过这游戏的金手指,所以一看我就知道M(main)+0A04FB60,就是储存CP的地址,这游戏大多数数值都保存在main区间,heap区间那两个肯定不是,main的地址是可以直接当做金手指的,但我现在讲的是用汇编的方法去修改。

按方向键把光标移动到M+0A04FB60这一行上,按“+”键,给这个地址命名,并添加到Bookmark(书签)。

使用Breeze在switch实机上对游戏进行汇编修改-pic-12

接下来进入书签界面,可以看到刚才保存的地址。

选择Memory Explorer(内存管理器),界面有点大,档住视线了,按ZL、ZR可以缩小。

再选择Expand menu(扩展菜单)。

再选择下面的SetBreakPoint(设置断点)。

使用Breeze在switch实机上对游戏进行汇编修改-pic-13

使用Breeze在switch实机上对游戏进行汇编修改-pic-14

使用Breeze在switch实机上对游戏进行汇编修改-pic-15

使用Breeze在switch实机上对游戏进行汇编修改-pic-16

接下来就会自动跳转至gen2界面,左边界面光标选中第二行(就是刚才我找到的CP对应的地址),可以用ZL+↑  ZL↓来开关切换断点触发的条件,开启之后左边会有显示,W就是write,写入断点。R就是read,读取断点。

我这里仅开启W的断点,至于为什么,E大的教程里有讲过,这里不再讲一遍了。

回到正题,断点类型设置好之后。

按+激活断点,此时Breeze背后的游戏背景会消失。左边界面光标移动到第二行,按R键将地址载入,此时第三行就会从00000000变成第二行的地址,这个时候断点已经准备完毕。

切换回游戏,让CP变动,使断点触发。

使用Breeze在switch实机上对游戏进行汇编修改-pic-17

使用Breeze在switch实机上对游戏进行汇编修改-pic-18

使用Breeze在switch实机上对游戏进行汇编修改-pic-19

使用Breeze在switch实机上对游戏进行汇编修改-pic-20

买了一个东西之后,断点触发了。

使用Breeze在switch实机上对游戏进行汇编修改-pic-21

使用Breeze在switch实机上对游戏进行汇编修改-pic-22

再次打开Breeze,此时会看到,左边那里多了一行

[M+0x001ce108]    STR  W19 [X20,#0x1a8]

这就是用断点捕捉到程序了,在这一行按X键即可查看程序。

程序的意思是将W19,写入到[X20,#0x1a8]  这个位置,也就是说我要改的这个CP,是从W19写进刚才找到的M+0A04FB60这个地址的。

先按“-”把断点关掉,然后开始分析程序。

使用Breeze在switch实机上对游戏进行汇编修改-pic-23

首先就是要看W19,从哪里来的。

使用右边界面的page up 往上翻一下。

好像只有一句有关,M+0x1ce0ec   mov w19,w0

说明W19又是从W0传过来的,再往上翻找不到相关的程序了。

说明W0并不在这附近计算,而是从别的地方传过来的。

那么Breeze目前功能有待完善,做溯源终归是不如ida pro方便的,但问题不大,并不妨碍我修改。

再来看这句,M+0x1ce0e8  LDR W8 [x20,#0x1a8]

[x20,#0x1a8],这个位置上面讲过了,是cp的位置,加载进W8里,唯一跟W8有关的就是下一句

M+0x1ce0f0    subs   w1 ,w8,w0,意思是将W8减去W0的值赋值给W1,再配合看下一句,M+0x1ce0f4   b.ls,基本上就看懂了整段程序的意思,大概是用于判断CP是否足够买东西用的。

这三句没什么用,我就拿这三句来改。

M+0x1ce0e8
M+0x1ce0f0
M+0x1ce0f4

修改之前,先把程序原来的样子,添加进金手指,这就是还原码,关金手指用的。

左边界面选中对应行,再按ZL+Y,添加进金手指。

这三行分别命名为

Restore code1、2、3。

然后开始修改

使用Breeze在switch实机上对游戏进行汇编修改-pic-24

第一行修改为 mov w19,5431    将5431给W19赋值

第二行修改为 mov w0,1000      将1000给W0赋值

第三行修改为 mul w19,W19,W0   将W19乘W0的值给W19赋值

最后再配合下面的[M+0x001ce108]    STR  W19 [X20,#0x1a8]

将我修改的值,写回内存里。

所以最终写入的值会是5431×1000=5431000

那么修改完成,返回游戏看看效果

使用Breeze在switch实机上对游戏进行汇编修改-pic-25

修改成功,跟我想的一样,接下来就可以把,修改过的程序,按ZL+Y添加进金手指,依次命名为 cphack1、2、3。

到此,就修改完了。

最后添加过的金手指会在  

SD Card/switch/breeze/cheats/TID/BID.txt

自动生成对应的金手指文件,再稍微编辑整理一下,就可以打包发到网上分享给大家了

使用Breeze在switch实机上对游戏进行汇编修改-pic-26

使用Breeze在switch实机上对游戏进行汇编修改-pic-27


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《Switch Breeze 金手指制作教程一:在switch实机上对游戏进行汇编修改》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌