本帖最后由 luoyuchen 于 2022-8-8 10:34 编辑
我们搜先找出当前植物的个数 右键访问是谁访问了这个地址。
只有这一条地址,我们就选这一条地址
[Asm] 纯文本查看 复制代码 add [esi+10],eax 我们直接在这进行HOOK
mov eax,edi
call PlantsVsZombies.exe+1B20
mov eax,edi
pop edi
pop ebx
ret
开始写汇编,
[Asm] 纯文本查看 复制代码 add dword [esi+0x10], eax
mov eax, edi // 这两句是被HOOK的代码 我们申请内存以后还原上
mov ebx, dword [esp+0x04] [esp+4]= 植物的纵坐标 我们把纵坐标传递给ebx 为什么要获取纵坐标呢 因为等会我们的调用僵尸call 需要坐标 我们判断植物在哪个坐标,僵尸就在哪一个坐标出来
以下是僵尸call 相关代码
pushad
push 0x00000009
push 0x00000000
mov eax, ebx ’//这儿把我们获取植物的纵坐标传递给 eax 僵尸需要出来的纵坐标
mov ecx, dword [0x006A9EC0]
mov ecx, dword [ecx+0x00000768]
mov ecx, dword [ecx+0x00000160]
mov ebx, 0x0042A0F0
call ebx
popad
jmp label1
label1:
mov edx, 0x0041DEEC //跳回HOOK的下一处执行代码
jmp edx
现在我们申请一个内存
写入我们的汇编 然后HOOK的地址跳到这个地址
最终的结果是,当你种植一植物,会直接调用一个僵尸,会和植物在同一横坐标。
至此整个分析就完成了,我们要用一切能想到的方法去尝试修改。万一成功呢对不对。
额外之前分析的教程: 植物大战僵尸之植物被咬反增阳光 当前这几篇的写法都在这个里面,写法一样我只写了其中一个
植物大战僵尸之这豌豆有毒啃着啃着就炸了
植物大战僵尸阳光开局9990 以前写的源码都在这里面,功能还算全面
|