今天的帖子晚了一点,天气太热了。没有空调的加持。风扇的风出啦也是热风。
哈哈哈,好了我们直接开始今天的教程
搜索我们的流程是>找到小推车当前数>调用通关的CALL
我们先找到小推车的关键地址
搜索当前小推车数:
访问地址:
我们可以看到只有这么一条
[Asm] 纯文本查看 复制代码 PlantsVsZombies.exe+1BDE8 - 01 AE 10010000 - add [esi+00000110],ebp //把Ebp的值传递给 [esi+110]
PlantsVsZombies.exe+1BDEE - E9 21FFFFFF - jmp PlantsVsZombies.exe+1BD14
PlantsVsZombies.exe+1BDF3 - 05 EC000000 - add eax,000000EC { 236 }
PlantsVsZombies.exe+1BDF8 - 8B 8E 20010000 - mov ecx,[esi+00000120]
PlantsVsZombies.exe+1BDFE - 8B BE 1C010000 - mov edi,[esi+0000011C]
PlantsVsZombies.exe+1BE04 - 69 C9 EC000000 - imul ecx,ecx,000000EC { 236 }
那么 我们知道 [esi+110]是当前小推车数,我们规矩 申请内存
我们申请的长度100就可以了 其实也要不了那么多,20 30都可以
申请的内存如下:
现在我们在HOOK的地方跳过去
现在我们开始手撮代码。
之前申请的内存因为寄存器的冲突,导致程序奔溃。所以又重新申请一个内存
写到申请的代码如下:
[Asm] 纯文本查看 复制代码 add dword [esi+0x00000110], ebp //还原HOOK的代码
cmp dword [esi+0x00000110], 0x03 判断 小推车数
jc label1 小于3 则跳到过关的call
jnbe label2 否则跳回原代码执行
//以下是过关call
label1:
pushad
mov ecx, dword [0x006A9EC0]
mov ecx, dword [ecx+0x00000768]
mov ebx, 0x0040C3E0
call ebx
popad
//以下是跳回原代码
label2:
mov edx, 0x0041BDEE
jmp edx
效果如下:
目前还有四个所以依照原代码区执行
当<=3
调用通关call
致次整个教程就结束了,代码不是很难,我们需要的是变通。兄弟们,游戏是简单的游戏,但是思维不是。我们要多去构想一下啊
之前文章:
植物大战僵尸之子弹魅惑
植物大战僵尸之种植植物调用僵尸CALL
植物大战僵尸之植物被咬反增阳光
植物大战僵尸之这豌豆有毒啃着啃着就炸了
植物大战僵尸阳光开局9990
|