植物大战僵尸之子弹魅惑
我们的思维是-找到植物数-找当僵尸血量-判断植物数<5-写入魅惑代码。我们先找出植物的数量的基址 我这儿找出的是 这个右键访问 然后CE一层一层的往上扫描就可以了。这个就不多做演练了。
我们搜索僵尸的血量
搜索出来以后我们右键访问是谁访问了该地址
00412E99 - 03 86 C8000000- add eax,
005312FE - 8B BD C8000000- mov edi,
0052D71B - 8B B0 C8000000- mov esi,
00531319 - 89 BD C8000000- mov ,edi
0052A4E6 - 8B B3 C8000000- mov esi,
0052A527 - 39 8B C8000000- cmp ,ecx
00531783 - 83 BD C8000000 00 - cmp dword ptr ,00
第一条我们不考虑,因为一直在进行内存操作,我们选下面一条
005312FE - 8B BD C8000000- mov edi,
反汇编查看
je PlantsVsZombies.exe+1312FE
push 00
mov eax,ebp
call PlantsVsZombies.exe+130950
mov edi,
mov eax,ebp
mov ,edi
call PlantsVsZombies.exe+12D710
这儿是把当前僵尸的血量传递给edi
老方法,申请一个内存
现在我们就要写汇编了,首先跳到我们申请的内存
汇编大概如下:
mov edi, dword //还原HOOK的代码
//以下是取植物的数量
mov ebx, dword 把基址传递给 ebx
mov ebx, dword //在把基址+768传递给ebx
mov ebx, dword //最后把 基址+768+bc传递给ebx 至此整取就完成了
cmp ebx, 0x06 判断 ebx
jc label1 小于 则跳到label1
jnbe label2大于则 跳到label2
//上面的理解是当植物小于6的时候执行我们的写入的汇编代码,否则就跳回原代码去执行
label1:
mov byte , 0x01 // ebp+b8 是僵尸是否被魅惑,可以看作是一个逻辑判断 0=假1=真
label2:
mov ecx, 0x00531304
jmp ecx
现在写入到我们申请的内存里面
进游戏看效果
植物小于6 那么触发我们的代码 目前子弹没击中僵尸的状态
只要是僵尸受到伤害以后
为了不是很变态,我们才增加植物数量的判断,大于6 我们就恢复原代码去执行了。目前这个是普通僵尸的地址,需要别的大家可以去练练手 方式方法一样
往期帖子;
植物大战僵尸之种植植物调用僵尸CALL
植物大战僵尸之植物被咬反增阳光
植物大战僵尸之这豌豆有毒啃着啃着就炸了
植物大战僵尸阳光开局9990
游戏我打包咋蓝奏:https://wwd.lanzouv.com/iXyXP099yzyh
密码:eu1m 原理是搜索数值修改吗,感觉打包成exe好一些吧,求一个exe 学习一下,谢谢分享 谢谢大佬的技术分享 大家都喜欢折磨PVZ:lol 不明觉厉 RippleSky 发表于 2022-8-9 10:20
大家都喜欢折磨PVZ
网游不敢分享 看的我冷汗直冒,要那么复杂吗 卧槽,手搓汇编 耶斯,感谢分享 资瓷写的很详细