植物大战僵尸中文年度加强版

文章正文
发布时间:2025-07-08 10:07

找了几个功能,需要用到超级模块 易语言所写。在家快发霉了  真的无聊 找点事情打发时间
.版本 2
.程序集 窗口程序集_窗口1
.程序集变量 进程ID, 整数型


.版本 2

.子程序 _按钮1_被单击
.局部变量 x, 字节型, , , 0-5
.局部变量 y, 整数型, , , 0-8

置随机数种子 ()
.如果真 (_内存合法性 ())
    .计次循环首 (75, )
        x = 取随机数 (0, 5)
        y = 取随机数 (0, 8)
        调用函数 (进程ID (), _秒关 (x, y))
    .计次循环尾 ()
.如果真结束


.子程序 _秒关, 字节集
.参数 x, 整数型, , x坐标
.参数 y, 整数型, , y坐标

' push 0x00000000
' push 0x00000003
' push dword [ebp+0x08]
' push dword [ebp+0x0C]
' mov eax, dword [0x00755E0C]
' mov eax, dword [eax+0x00000868]
' mov eax, dword [eax+0x00000178]
' push eax
' mov ecx, 0x0042C7D0
' call ecx
置汇编代码 ({  })
Pushad ()
Push (0)
Push (3)
Push (x)
Push (y)
Mov_EAX_Ptr (7691788)
Mov_EAX_Ptr_EAX_Add (2152)
Mov_EAX_Ptr_EAX_Add (376)
Push_EAX ()
Mov_ECX (4376528)
Call_ECX ()
Popad ()
ret ()
.如果真 (进程ID () > 0)
    返回 (取汇编代码 ())
.如果真结束
返回 ({  })

.子程序 进程ID, 整数型

返回 (进程取ID (“PlantsVsZombies.exe”))

.子程序 _内存合法性, 逻辑型, , 检测是否可读写,防止Call奔溃
.局部变量 addr, 整数型

addr = 读内存整数型 (进程ID (), 7691788)
addr = 读内存整数型 (进程ID (), addr + 2152)
.如果真 (addr > 0)
    返回 (真)
.如果真结束
返回 (假)

.子程序 _植物种植, 字节集
.参数 类型, 整数型
.参数 x, 整数型, , 0-5
.参数 y, 整数型, , 0-8

' push 0xFFFFFFFF
' push dword [ebp+0x08]
' mov eax, dword [ebp+0x0C]
' push dword [ebp+0x10]
' mov ebx, dword [0x00755E0C]
' mov ebx, dword [ebx+0x00000868]
' mov esi, ebx
' push esi
' mov ebp, 0x00418D70
' call ebp

置汇编代码 ()
Pushad ()
Push (-1)
Push (到整数 (十到十六 (类型)))
Mov_EAX (x)
Push (y)
Mov_EBX_Ptr (7691788)
Mov_EBX_Ptr_EBX_Add (2152)
Mov_ESI_EBX ()
Push_ESI ()
Mov_EBP (4296048)
Call_EBP ()
Popad ()
ret ()
.如果真 (进程ID () > 0)
    返回 (取汇编代码 ())
.如果真结束
返回 ({  })

.子程序 _按钮2_被单击

.如果真 (_内存合法性 ())
    调用函数 (进程ID (), _植物种植 (到整数 (编辑框1.内容), 0, 0))
.如果真结束



.子程序 _僵尸, 字节集
.参数 坐标, 整数型, , 0-5
.参数 类型, 整数型

' push dword [ebp+0x08]
' push dword [ebp+0x0C]
' mov eax, dword [0x00755E0C]
' mov eax, dword [eax+0x00000868]
' mov ecx, 0x00419A60
' call ecx
置汇编代码 ()
Pushad ()
Push (坐标)
Push (到整数 (十到十六 (类型)))
Mov_EAX_Ptr (7691788)
Mov_EAX_Ptr_EAX_Add (2152)
Mov_ECX (4299360)
Call_ECX ()
Popad ()
ret ()
.如果真 (进程ID () > 0)
    返回 (取汇编代码 ())
.如果真结束
返回 ({  })

.子程序 _按钮3_被单击

.如果真 (_内存合法性 ())
    调用函数 (进程ID (), _僵尸 (0, 到整数 (编辑框2.内容)))
.如果真结束