植物大战僵尸-2实现一炮秒杀僵尸

Posted 叁滴水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了植物大战僵尸-2实现一炮秒杀僵尸相关的知识,希望对你有一定的参考价值。

思路

​ 猜测僵尸的血量在0-1000之间,通过CE搜索0-1000的值,并且每次打中僵尸之后搜索减少的值。通过这个可以顺带理解DNF或者其他刷怪游戏,秒杀怪物。

1、最终找到普通僵尸的值为200,每次打中之后减少20。

2、同样,右击找哪里访问了这个地址。

005312FE - 8B BD C8000000  - mov edi,[ebp+000000C8]
0052D71B - 8B B0 C8000000  - mov esi,[eax+000000C8]
00531319 - 89 BD C8000000  - mov [ebp+000000C8],edi
0052A527 - 39 8B C8000000  - cmp [ebx+000000C8],ecx
00531783 - 83 BD C8000000 00 - cmp dword ptr [ebp+000000C8],00

3、通过OD进行调试查看,寻找减少僵尸血量数值的代码。

4、搜索第一个005312FE,看了半天没发现可以下手的地方

5、搜索第二个0052D71B也同样没发现

6、搜索第三个00531319,发现里面有一个减法运算,想必这里就是减少血量的地方。

7、由此看来edi则是当前血量的值,可以通过修改edi的值,修改当前血量。

8、修改上面0053130F,减法100,增加炮弹威力。但是修改后,下面的汇编代码会被nop。这种方式程序会崩溃。

9.解决方案,Ctrl+B里面搜索很多0,则跳转到006510CD这个位置。在这里吧nop的代码补全

10.将减少血量的代码复制到下面任意地方。

之前代码

0053130F      2B7C24 20     sub edi,dword ptr ss:[esp+0x20]          血量减少运算
00531313      894424 1C     mov dword ptr ss:[esp+0x1C],eax
00531317      8BC5          mov eax,ebp
00531319      89BD C8000000 mov dword ptr ss:[ebp+0xC8],edi          ;  PlantsVs.<ModuleEntryPoint>
0053131F      E8 ECC3FFFF   call PlantsVs.0052D710
00531324  |.  8BD8          mov ebx,eax
00531326  |.  8B45 24       mov eax,[arg.8]

006510E1      00            db 00
006510E2      00            db 00
006510E3      00            db 00
006510E4      00            db 00
006510E5      00            db 00
006510E6      00            db 00
006510E7      00            db 00


修改之后的代码,其中 sub edi,64为每次减少血量100。这样两炮就可以打死一个僵尸,这里的威力可以任意调节。

64位16进制转换10进制为100。

以上是关于植物大战僵尸-2实现一炮秒杀僵尸的主要内容,如果未能解决你的问题,请参考以下文章

植物大战僵尸:实现灵魂收割者

植物大战僵尸mixed怎么下载?

pvz2网络延迟补偿

植物大战僵尸——任意阳光修改

《植物大战僵尸》游戏数据修改

求CE搜索植物大战僵尸金钱方法!、搜索基址时有一个偏移是中间包含了*这个符号在中间,怎么运算,求解