上一节,我们讲解了一击必杀,技能冷却无CD等人物战斗时用到的金手指制作,这一节,将会讲解人物升级相关的功能以及宝石和打孔器等材料数量的锁定功能制作

1. 在游戏中特别是在游戏后期,我们会发现人物随着等级的提高,升级所需的经验值也越来越高,呈现指数级增长,每升一级越来越困难,再加上练小号升级到70的漫长过程也是令人烦恼的,为了能够快速升级,我们考虑去修改经验值的获取量,首先,在原始版本中搜索经验获取英文experiencegrant,找到了sExperienceGrantToACD函数,继而找到了要hack的地方,转到汇编代码,再找到2.6.6的地址,hack掉这条指令,做成金手指代码即可

暗黑like java 暗黑like switch_逆向

暗黑like java 暗黑like switch_游戏_02

暗黑like java 暗黑like switch_汇编_03

暗黑like java 暗黑like switch_暗黑like java_04

2. 进游戏测试一下经验值金手指,果然人物升级变快了,基本上杀几个怪升一级,不过,我们还是觉得有些慢,有没有一种方法可以直接升到满级呢?答案是肯定的,我们开始寻找这种办法,搜索levelup,发现函数sExperienceLevelUp,点进去找到了要hack的地方,然后找到2.6.6对应的地址进行hack,写成金手指代码即可

暗黑like java 暗黑like switch_金手指_05

暗黑like java 暗黑like switch_汇编_06

暗黑like java 暗黑like switch_汇编_07

暗黑like java 暗黑like switch_逆向_08

暗黑like java 暗黑like switch_金手指_09

3. 进游戏测试一下,升一级直接70级,再升级直接20000级,完成。接下来我们要做的另一个功能就是宝石等材料的数量修改,我们在原始版本里搜减的英文subtract,发现了函数SubtractFromStackCount,字面意思是从堆中减去,可以理解为玩家消耗或者丢弃背包和仓库的堆类物品时会调用此函数,那么继续往下看,就找到了我们要hack的地方,也就是减少的指令,找到2.6.6对应的地址,hack掉即可,改为mov X19, 9999,那么扔掉一部分数量的材料,剩余的就会变成9999啦

暗黑like java 暗黑like switch_游戏_10

暗黑like java 暗黑like switch_汇编_11

暗黑like java 暗黑like switch_游戏_12

暗黑like java 暗黑like switch_汇编_13

暗黑like java 暗黑like switch_金手指_14

4. 我们进游戏测试,从背包里扔掉1颗宝石,或者从仓库里物品堆中取出一部分,比如萨玛兰迪的礼物(打孔器),剩余的数量果然变成了9999,开心吧

暗黑like java 暗黑like switch_暗黑like java_15

暗黑like java 暗黑like switch_金手指_16

暗黑like java 暗黑like switch_游戏_17

暗黑like java 暗黑like switch_逆向_18

5. 接下来,我们讲解如何在通过一次大秘境后直接解锁最高层150层,大秘境又称奈非天裂隙,因此搜索riftlevel,发现函数ACDTrySetHighestUnlockedRiftLevel,点进去,找到要hack的地方,转到汇编,然后找到2.6.6的地址,做hack即可,我们把原指令改为mov w21,w0,就把最大层数(150)赋值给了w21,这样当我们通过任意一层大秘境时,最大层也被设置为了上限150

暗黑like java 暗黑like switch_金手指_19

暗黑like java 暗黑like switch_逆向_20

暗黑like java 暗黑like switch_汇编_21

暗黑like java 暗黑like switch_暗黑like java_22

6. 当我们在游戏里获取的装备和物品过多时,仓库数量上限350明显不够用,于是我们有了修改仓库上限的想法,想要修改上限,首先要找出上限值,因为在物品移动到仓库时会判断是否达到上限,因此我们搜索movetostash,发现了ItemMoveToStash,然后打开伪代码,往下又发现了ACDInventoryCanHold,双击打开,又发现了sACDInventoryFindBestLocation,继续打开,往下看,分析代码找到了上限840,然后根据附近代码相似找到2.6.6版本的上限,发现2.6.6版本的上限是910,因此仓库上限就是910

暗黑like java 暗黑like switch_逆向_23

暗黑like java 暗黑like switch_逆向_24

暗黑like java 暗黑like switch_暗黑like java_25

暗黑like java 暗黑like switch_逆向_26

7. 知道了储藏箱上限,接下来就简单了,我们搜索maxstash,发现函数ACDInventoryGetMaxStashSlots,双击打开,发现默认上限是350,找到2.6.6的地方,Hack掉

暗黑like java 暗黑like switch_汇编_27

暗黑like java 暗黑like switch_汇编_28

暗黑like java 暗黑like switch_汇编_29

8. 接下来我们hack购买储藏箱仓位的函数,搜索buyslots, 发现了SACDInventoryBuyStashSlots,打开,找到要hack的地方,一共有三处,我们最后找到2.6.6对应的三处地址修改之

暗黑like java 暗黑like switch_游戏_30

暗黑like java 暗黑like switch_暗黑like java_31

暗黑like java 暗黑like switch_汇编_32

暗黑like java 暗黑like switch_游戏_33

暗黑like java 暗黑like switch_汇编_34

暗黑like java 暗黑like switch_暗黑like java_35

9. 至此,我们已经改好了大部分上限判断,还有一处升级仓位所需金币需要改一下,我们搜索GetStashUpgradeCost,发现函数ACDInventoryGetStashUpgradeCost,打开后找到要hack的位置,然后去找2.6.6对应的地址,hack之后,和之前的hack指令一起写成金手指代码

暗黑like java 暗黑like switch_逆向_36

暗黑like java 暗黑like switch_汇编_37

暗黑like java 暗黑like switch_逆向_38

暗黑like java 暗黑like switch_金手指_39

10. 进入游戏测试金手指,去储藏箱看看,是不是可以突破350的仓位上限啦!

暗黑like java 暗黑like switch_游戏_40

好了,本节到此结束,在本节中,我们学会了怎么制作经验值翻倍,人物满级,堆类型材料数量锁定,以及储藏箱容量上限提升的功能,分析和hack程序的功力又上了一层楼,下一节将会讲解关于传奇宝石相关的一系列金手指制作,相信读者会体验到终极逆向和hack技术的魅力!