功能实现:竖排种植
简朴推测
若 拖动卡片 且 点击种植
则 触发种植call
推测来由:点击种植肯定必要知道是什么类型的植物,所以可以由 放下时ID 可以逆推种植CALL(现实上由种植CALL调用ID-CALL)
主要思路
1. 找放下时ID
具体:拖动卡片,会初始化一个数据,暂命名为 拿起时ID;点击种植,也会初始化一个数据,暂命名为 放下时ID(提示:ID怎么来?看植物图鉴,从0开始自左至右,自上而下!提示2:一个ID临时数据只对应当前的第x棵植物)
2. 找放下时ID的初始化代码
具体:对 放下时ID 这个数据,查找什么访问了它,种下一颗植物,这个时间盯着看 增加的代码集,找出 mov [ebx+24],esi 等类似字样,可以很大概率断定为 初始化代码
3. 找外层CALL
具体:连续两次下断,依次跳到ID-CALL层、种植CALL层
4. 分析种植CALL参数
具体:依次为-1、植物ID(具体指针为6A9EC0+768+138+28)、Y坐标、X坐标、某个基址(可以是卡槽耐久二级指针,具体为6A9EC0+768+AC)
5. 添加脚本
具体:这里只必要设 植物ID 是动态的,Y坐标分别为0~4,X坐标和某个基址由代码确定,不用管
具体代码如下:这只是第一行,若要种植5行,必要修改 植物Y坐标 并重复添加这段代码到CEAA脚本
[Asm] 纯文本查看 复制代码push ebxmov ebx,[006A9EC0]mov ebx,[ebx+768]mov ebx,[ebx+138]mov ebx,[ebx+28]mov eax,ebxpop ebxpush 0xffffffffpush eax // 植物IDmov eax,0 // 植物Y坐标push edi // 植物X坐标push ebp // 某基址call PlantsVsZombies.exe+D120
分析过程
找放下的ID的访问代码集,如下图
找外层CALL,找种植CALL,如下图
现实效果,如下图 |