9.游戏中真正的无敌

上一个内容:8.什么是HOOK

在 7.封装读写游戏数据的功能2 中写是无限循环给生命值的内存地址赋值达到无敌的效果,这个方式有很大的弊端比如如果怪物的攻击力很高我们碰一下我们就得死这样的情况无限赋值也没用了,所以给内存写值的方式实现的无敌是一种假无敌,真正的无敌是拦截触发hp-伤害的代码,把这个代码改为hp-0或者把hp-0的指令删掉,或者略过这个hp-伤害这个代码。

然后生命值的内存偏移是CEF18(exe文件到内存中32为程序都是以0x400000开始这个是固定的,血量是0x4CEF18,0x4CEF18-0x400000=0xCEF18),然后通过CheatEngine来实现hp-伤害这个代码的略过

然后让怪物打一下

然后选中sub [esi+10],edi 再点击显示反汇编程序

删除指令的方式鼠标双击1位置,然后在2位置写汇编指令,现在要写的汇编指令是NOP,可能点了确定之后还会有一个弹框,直接点否

然后原本的sub [esi+10],edi删掉,删掉的做法是把它写成NOP,在汇编里nop表示没有指令,处理器在执行到nop时什么都不会做然后执行下一行,由于sub [esi+10],edi占用了三个字节所以它显示的是三个nop

然后把sub改为add这样每次怪物攻击时我们就会加血

如果想hp-0这样需要一块新的内存空间,原本空间只有sub [esi+10],edi它的三字节这样是无法实现hp-0的,每个程序都会有一块nop空间,我们可以利用它也可以自己申请一块空间

通过上面改完汇编代码会发现我们也打不死怪物了。通过追踪血量修改的地方,找到的代码,改了之后我们也打不死怪物了,可以推断出角色打怪物与怪物打角色,怪物与角色是用的同一个函数同一个类不同的变量。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值