首页 > 其他分享 >《植物大战僵尸》 辅助编写4—— 僵尸别动

《植物大战僵尸》 辅助编写4—— 僵尸别动

时间:2023-02-09 13:34:14浏览次数:47  
标签:别动 僵尸 edi 地址 dword 编写 ptr esi

想要实现僵尸位置不动,那么需要先找到僵尸对象的地址。 上文我们知道了植物血量的偏移以及植物扣血的指令位置。

在0052FCF0地址的指令执行时,植物被僵尸咬会扣血,断点断住的时候,寄存器的值如下


既然是被僵尸攻击,那么这些寄存器中有概率存在僵尸对象的地址。这里EBP和ESI这两个寄存器里面的地址比较可疑。先试EBP中的值。
猜测EBP的值是僵尸对象的地址。并且大小等于EE6228C-EE62130 =0x15C字节

这里发现有10个值。但场上的僵尸个数并没有这么多。先在最后一行000000还未分配的地址下写断点。等大波僵尸时应该会触发断点。
发现在0x00522510左右的位置断住。

Run till return 点一下。僵尸属性赋值 函数中eax是僵尸的基地址。可以看到是从edi获取的。

而edi是在0041DDD3地址的指令得出最终的值。它先有ebx传入一个偏移值(0,1,2,3,4)然后乘以僵尸对象的大小0x15C字节,得出僵尸的地址偏移再加上esi地址里存储的基地址。

mov edi,ebx ;0041DDCB
imul edi,edi,15C ;0041DDCD 
add edi,dword ptr ds:[esi]  ;0041DDD3                      

使用CE搜出位置变化的字段,发现0x2C偏移的4字节字段是僵尸的X轴地址。 0052AB3B使用了fstp指令将float类型的数值从fpu寄存中存回内存。

fld st(0),dword ptr ds:[esi+2C]       	;0052AB30
fadd st(0),dword ptr ss:[esp+8]       	;0052AB33  
cmp dword ptr ds:[esi+24],7   			;0052AB37           
fstp dword ptr ds:[esi+2C],st(0)     	;0052AB3B  

所以如果想实现静止术,将fadd指令改成nop即可.

标签:别动,僵尸,edi,地址,dword,编写,ptr,esi
From: https://www.cnblogs.com/dewxin/p/17104950.html

相关文章