植物大战僵尸-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实现一炮秒杀僵尸的主要内容,如果未能解决你的问题,请参考以下文章