上一节,我们通过代码Hack的方式修改了移速和攻速,这一节,将通过程序分析的方式,制作出各种强力的战斗杀敌金手指功能
1. 我们先修改暴击几率和暴击伤害,先搜索critchance, 找到PowerComputeCritChance函数,双击转到伪代码,要hack的就是最后的返回值,我们需要改成1,注意,PowerComputeCritChance是敌我通用的,hack的时候要注意区分敌我,跟上节一样
2. 转到汇编代码,然后再找到2.6.6对应的地址,我们就在FCMP S0, #0.0上做hack跳转
3. 找空白区域编写代码如下
4. 写成金手指格式
5. 接下来开始修改暴击伤害,原始版本中搜索critdamage,打开PowerComputeCritDamageScalar,拉到最后面,我们发现了暴击伤害获取后进行了另外一个比较,我们猜测是暴击伤害上限,在游戏里测试也会发现,爆伤上限是900%,这个在hack时需要解除的
6. 我们转到汇编代码,顺便再找到2.6.6对应的地址,通过分析,找到了需要Hack的指令,可以直接在上限判断的指令上做hack,这样就不用找空白区域写hack代码了
7. 编写代码如下
8. 经过测试会发现,对怪物造成的爆伤好像没有达到上亿倍,我们猜测可能还有一些地方做了爆伤限制,所以继续寻找,在函数PowerComputeCritDamageScalar上右击跳转到外部引用,看到PowerAPI_DoPayload,根据字面意思猜测这个是造成伤害的函数,双击点进去,发现了这里也有暴击伤害的限制,找到2.6.6对应的地方,改为NOP解除之
9. 我们另外还发现PowerAPI_BuffAddToACD里也有做爆伤限制的地方,可能是DOT伤害,同样找到2.6.6对应的地方,怒改之
10. 最后,我们得到的金手指代码如***意30倍,万倍,亿倍的区别仅在于最后的指令改成NOP,关闭的金手指代码只用把程序原指令恢复即可
11. 这样我们就完成了暴击率+暴击伤害的金手指,但是暴击伤害却并没有计算到人物面板DPS中,因此我们介绍一下暴击伤害加成的另一种写法,也就是类似于面板攻速的Hack修改法,首先先要解除计算DPS时的爆伤上限限制,在GetDPSValue里发现了PowerActorGetWeaponDamageAndAttackSpeed,继续点进去,拉到后面。通过分析代码找到了爆伤的限制处,然后去找到2.6.6的地址,把限制改掉即可(改成fmov s0,s10),至此我们改掉了爆伤的最后一个限制
12. 找空白区域编写汇编代码如***意因为金手指地址偏移-0x1000,最后实际跳转的是0x66ED30, 编写完后在0x66ED2C处改成此段代码的调用指令就可以了
13. 至此,我们完成了所有代码的编写,再加上之前解除爆伤限制的修改,合起来转写成金手指代码如下
14. 接下来进游戏中测试一下爆伤金手指,成功,爆伤是原来的1000000倍,48是人物本身自带的50,由于计算精度变成了48,不用在意,而且面板DPS也计算对了,现在终于可以去暴虐怪物了,想想都开心
15. 好了,本节到此结束,本来是想将其他功能修改一起放到这一节的,不过目前来看内容有点多,就先到这里吧,下一节我们将会讲解如何制作最变态的金手指:一击必杀和生命不减,能量不减等等振奋人心的功能