-
-
[原创]植物大战僵尸阳光收集分析
-
发表于: 2022-9-27 11:36 6050
-
1.第一次分析
在植物大战僵尸里可拾取的物品有除了阳光外还有金币,银币等等,那么如果想要实现自动拾取物品,就要了解游戏是怎样判断拾取的逻辑的。逆向分析发现,无论是阳光,金币,还是银币都有一个相同结构,我称其为item。一旦有item生成,比如掉落了一个阳光。我们点击它就会被拾取,点击它旁边的区域它不会被拾取。
ebx就是item的结构体,一旦你点击了游戏中的某个区域,游戏首先会判断ebx+0x50的位置的值,如果是0就表明你点击的区域不是item的区域就会往下执行通过下方的jmp跳过拾取的逻辑,反之就执行拾取逻辑。事实上只要把jnz改为jmp就能完美实现自动拾取。
2.继续分析pick_item
我们继续分析pick_item 具体如何实现,由于里面都是浮点数操作直接f5偷个懒吧。
结合我们的小学数学知识可以推测出,item都是被看成是一个圆形,大的item圆形半径是12,小的item是8。游戏会利用两点间距离公式计算你点击的位置到item的距离。如果item的半径大于distance就说明你点击的item就会执行additem操作就是增加item的数值(如增加阳光等)反之就跳过它。
3.总结
1 游戏利用点和圆的位置关系来判断是否真正拾取物品。
赞赏
看原图
赞赏
雪币:
留言: