某游戏的共用代码段的处理与思路
好久不见,甚是想念。
对于本期来说,我思考了很久。
灵感总是一瞬间爆发出来的,不是吗。
好了 实践开始
注:偏移皆为16进制偏移
我们先看这个函数
public override Boolean beHurt(AttackInfo attackInfo) { }
分析一下:
翻译为:"是否受到伤害"
含有一个攻击信息的参数
是布尔类型的
所以我们之间无脑修改,赋值false 然后返回。
然后我们就会发现,对面打不到我,我也打不到对面
然后,我们再尝试修改参数 也是一样的情况
这,就是共用代码了,我们该怎么解决呢?。。。
在这里我提供两个方案。
一是通过ce调试看寄存器,找阵容(如果找不到的话 就看调用,找阵容,然后再进行判断,是否调用call)。
二是通过ce看某个寄存器的地址,看结构体之间的不同,写判断。
本期先讲第二种方法。
由于本人比较懒,所以就直接讲思路与结果。
先攻击敌人断点,然后搜索r1的地址,在r1偏移14的地方,我方为1,敌人攻击我方,进行断点,r1偏移14敌方为0。
OK,直接写个判断就大功告成了。
找到可以hook的地方
然后进行,编写操作码。
懒得解释了,最后再把
这个地方b到hook的地址即可。
这里解释一下,为什么是这个地方
因为他是你修改参数的地方。
只要用心,就能成功