本帖最后由 luoyuchen 于 2022-8-5 11:30 编辑
开局搜索当前阳光的数量
种植以后再次搜索
现在我们右键访问是谁访问了这个地址
[Asm] 纯文本查看 复制代码 0041BAB5 - 03 82 60550000 - add eax,[edx+00005560]
00489825 - 8B 86 60550000 - mov eax,[esi+00005560]
我们看到有两个地址一直在访问,就拿这两个地址操作
随便选哪一个都可以,我们选择第二个
[Asm] 纯文本查看 复制代码 00489825 - 8B 86 60550000 - mov eax,[esi+00005560] //也就是这一条
我们反汇编查看代码
[Asm] 纯文本查看 复制代码 PlantsVsZombies.exe+89825 - 8B 86 60550000 - mov eax,[esi+00005560]
PlantsVsZombies.exe+8982B - 33 C9 - xor ecx,ecx
PlantsVsZombies.exe+8982D - 85 C0 - test eax,eax
PlantsVsZombies.exe+8982F - 0F9E C1 - setle cl
PlantsVsZombies.exe+89832 - 8D 74 24 4C - lea esi,[esp+4C]
PlantsVsZombies.exe+89836 - 83 E9 01 - sub ecx,01 { 1 }
PlantsVsZombies.exe+89839 - 23 C1 - and eax,ecx
通过下断 我们已知 [esi+5560]=当前的阳光数 然后在传递给eax
那就好办多了 我们直接开写代码
我们直接用CE申请一个内存
跳到申请到的内存
[Asm] 纯文本查看 复制代码 PlantsVsZombies.exe+89825 - E9 D6676A00 - jmp 00B30000
PlantsVsZombies.exe+8982A - 90 - nop
PlantsVsZombies.exe+8982B - 33 C9 - xor ecx,ecx
PlantsVsZombies.exe+8982D - 85 C0 - test eax,eax
PlantsVsZombies.exe+8982F - 0F9E C1 - setle cl
我们写入以下汇编
[Asm] 纯文本查看 复制代码 mov eax, dword [esi+0x00005560]
mov ebx, dword [0x006A9EC0]
mov ebx, dword [ebx+0x000007FC] 物品们把 [6a9ec0+7fc] 传递给 ebx [6a9ec0+7fc]是界面判断 2=选卡界面 3=游戏界面
cmp ebx, 0x03 判断是都是3
jne label2 否则跳到label2
cmp eax, 0x000000C8 判断是的是200
jc label1 小于200则跳到label1
jne label2 否则跳到label2 不跳则执行下面代码
label1:
mov dword [esi+0x00005560], 0x00002706 把2706十进制=9990 传递给 【esi+5560】
cmp eax, 0x00002706 判断是都是2706
jne label2 否则跳回 label2 不跳则执行下面代码
mov dword [esi+0x00005560], 0x00002706 把2706十进制=9990 传递给 【esi+5560】
jmp label2
label2:
mov edx, 0x0048982B 跳回源地址
jmp edx
可以看到 我们一开局进入游戏里面 阳关直接变成9990
整个教程就结束了,没解释清楚 给大家说声对不起。
看到有兄弟需要成品,我索性把以前写的源码也一直上传了。
界面大概如下:
加点分吧 几年了还没升级
zhiwu.7z
(2.46 MB, 下载次数: 6341)
|