好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 御坂00001号 于 2020-2-28 12:52 编辑
功能实现:竖排种植
简单猜测
若 拖动卡片 且 点击种植
则 触发种植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] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 | push ebx
mov ebx ,[006A9EC0]
mov ebx ,[ ebx +768]
mov ebx ,[ ebx +138]
mov ebx ,[ ebx +28]
mov eax , ebx
pop ebx
push 0xffffffff
push eax // 植物ID
mov eax ,0 // 植物Y坐标
push edi // 植物X坐标
push ebp // 某基址
call PlantsVsZombies.exe+D120
|
分析过程
找放下的ID的访问代码集,如下图
找类似 [ebx+24],esi 的初始化代码,进入反汇编,如下图
找外层CALL,找种植CALL,如下图
实际效果,如下图
最后总结
反正一句话,只有想不到没有做不到,要敢于猜测简单逻辑或叫做程序逻辑,然后找初始化或者叫做先遣值,从而从上往下找。下次为 找子弹跟踪 |
免费评分
-
查看全部评分
|