其实一开始对刷怪机制毫无头绪,感觉很难下手,没办法只好站在巨人的肩膀上了。
我下载了小王子的无尽刷怪修改器,并反汇编分析<应该可以吧>。首先是极限刷怪,方便起见我只选了一个橄榄,再给WriteProcessMemory下断,发现是在6a9ec0+768+6b4为首地址的连续1000个Dword内存区域写入我选择的僵尸,我这才知道原来每一轮所要出的所有僵尸在一轮的开始就全部确定了,而不是在每一波根据种子临时决定的。
下面要去找这个长度为1000的int数组是如何生成的,下断后得到
0040A094 E8 07380000 call PlantsVs.0040D8A0
0040A099 8BCB mov ecx,ebx
0040A09B 6BC9 32 imul ecx,ecx,0x32
0040A09E 8D91 AD010000 lea edx,dword ptr ds:[ecx+0x1AD]
0040A0A4 8B4C24 20 mov ecx,dword ptr ss:[esp+0x20]
0040A0A8 8D340A lea esi,dword ptr ds:[edx+ecx]
0040A0AB 83C1 01 add ecx,0x1
0040A0AE 83F9 32 cmp ecx,0x32
0040A0B1 8904B7 mov dword ptr ds:[edi+esi*4],eax//这里写入
每一波的每一只僵尸由函数0040d8a0得到
这个函数开头有个地方
0040D8B7 8D3CED 00000000 lea edi,dword ptr ds:[ebp*8]
0040D8BE 2BFD sub edi,ebp
0040D8C0 80BC2E D4540000 cmp byte ptr ds:[esi+ebp+0x54D4],0x0
0040D8C8 8D3CBD 80DA6900 lea edi,dword ptr ds:[edi*4+0x69DA80]
0040D8CF 897C24 14 mov dword ptr ss:[esp+0x14],edi
0040D8D3 0F84 B7010000 je PlantsVs.0040DA90//如果跳,表示无此僵尸
于是接着我去看byte ptr ds:[esi+ebp+0x54D4]的内存区域,果然发现以6a9ec0+768+54d4为首的连续33个byte内存区域内存放了每个僵尸是否写入出怪列表
我下载了小王子的无尽刷怪修改器,并反汇编分析<应该可以吧>。首先是极限刷怪,方便起见我只选了一个橄榄,再给WriteProcessMemory下断,发现是在6a9ec0+768+6b4为首地址的连续1000个Dword内存区域写入我选择的僵尸,我这才知道原来每一轮所要出的所有僵尸在一轮的开始就全部确定了,而不是在每一波根据种子临时决定的。
下面要去找这个长度为1000的int数组是如何生成的,下断后得到
0040A094 E8 07380000 call PlantsVs.0040D8A0
0040A099 8BCB mov ecx,ebx
0040A09B 6BC9 32 imul ecx,ecx,0x32
0040A09E 8D91 AD010000 lea edx,dword ptr ds:[ecx+0x1AD]
0040A0A4 8B4C24 20 mov ecx,dword ptr ss:[esp+0x20]
0040A0A8 8D340A lea esi,dword ptr ds:[edx+ecx]
0040A0AB 83C1 01 add ecx,0x1
0040A0AE 83F9 32 cmp ecx,0x32
0040A0B1 8904B7 mov dword ptr ds:[edi+esi*4],eax//这里写入
每一波的每一只僵尸由函数0040d8a0得到
这个函数开头有个地方
0040D8B7 8D3CED 00000000 lea edi,dword ptr ds:[ebp*8]
0040D8BE 2BFD sub edi,ebp
0040D8C0 80BC2E D4540000 cmp byte ptr ds:[esi+ebp+0x54D4],0x0
0040D8C8 8D3CBD 80DA6900 lea edi,dword ptr ds:[edi*4+0x69DA80]
0040D8CF 897C24 14 mov dword ptr ss:[esp+0x14],edi
0040D8D3 0F84 B7010000 je PlantsVs.0040DA90//如果跳,表示无此僵尸
于是接着我去看byte ptr ds:[esi+ebp+0x54D4]的内存区域,果然发现以6a9ec0+768+54d4为首的连续33个byte内存区域内存放了每个僵尸是否写入出怪列表




这个好








