您的位置首页百科问答

如何用易语言制作植物大战僵尸辅助

如何用易语言制作植物大战僵尸辅助

的有关信息介绍如下:

如何用易语言制作植物大战僵尸辅助

大家玩植物大战僵尸的时候都希望可以开外挂,今天小编就教大家如何用易语言制作植物大战僵尸辅助。

首先大家制作一个这样的界面:

然后在“窗口程序集1”里输入以下代码:

.版本 2

.支持库 iext

.程序集 窗口程序集1

.程序集变量 pid, 整数型

.程序集变量 基址1, 整数型

.程序集变量 基址2, 整数型

.子程序 _时钟1_周期事件

pid = 进程_名取ID (“PlantsVsZombies.exe”, )

.如果 (pid = 0)

分组框1.禁止 = 真

.如果真 (分组框1.标题 ≠ “未检测到游戏进程PID,不能进行操作”)

分组框1.标题 = “未检测到游戏进程PID,不能进行操作”

.如果真结束

时钟2.时钟周期 = 0

返回 ()

.否则

分组框1.禁止 = 假

.如果真 (分组框1.标题 ≠ “已检测到游戏进程PID,可进行操作”)

分组框1.标题 = “已检测到游戏进程PID,可进行操作”

.如果真结束

时钟2.时钟周期 = 200

.如果结束

基址1 = 内存_读整数型 (pid, 进制_十六到十 (“006A9EC0”))

基址2 = 内存_读整数型 (pid, 进制_十六到十 (“006A9F38”))

.子程序 __启动窗口_尺寸被改变

分组框1.宽度 = _启动窗口.取用户区宽度 ()

分组框1.高度 = _启动窗口.取用户区高度 ()

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框1.内容) > 99999 或 到整数 (编辑框1.内容) < 1)

信息框 (“请输入1~99999的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“768”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“5560”), 到整数 (编辑框1.内容))

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框2.内容) > 50 或 到整数 (编辑框2.内容) < 1)

信息框 (“请输入1~50的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“24”), 到整数 (编辑框2.内容))

.子程序 _编辑框2_内容被改变

.局部变量 大关卡, 整数型

.局部变量 小关卡, 整数型

小关卡 = 到整数 (编辑框2.内容) % 10

大关卡 = 到整数 (编辑框2.内容) ÷ 10 + 1

.如果真 (小关卡 = 0)

大关卡 = 到整数 (编辑框2.内容) ÷ 10

小关卡 = 10

.如果真结束

透明标签1.标题 = 到文本 (大关卡) + “-” + 到文本 (小关卡)

.如果真 (到整数 (编辑框2.内容) < 1 或 到整数 (编辑框2.内容) > 50)

透明标签1.标题 = “”

.如果真结束

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框3.内容) > 99999 或 到整数 (编辑框3.内容) < 1)

信息框 (“请输入1~99999的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“28”), 到整数 (编辑框3.内容))

.子程序 _编辑框3_内容被改变

透明标签2.标题 = 到文本 (到整数 (编辑框3.内容) × 10)

.子程序 _时钟2_周期事件

.局部变量 偏移1, 整数型

.局部变量 计次, 整数型

.局部变量 冷却偏移, 整数型

.局部变量 冷却偏移2

.如果真 (选择框1.选中 = 真)

偏移1 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“768”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“5560”), 到整数 (编辑框1.内容))

.如果真结束

.如果真 (选择框2.选中 = 真)

冷却偏移 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“768”))

冷却偏移2 = 内存_读整数型 (pid, 冷却偏移 + 进制_十六到十 (“144”))

.计次循环首 (10, 计次)

内存_写整数型 (pid, 冷却偏移2 + 进制_十六到十 (“70”) + 进制_十六到十 (“50”) × (计次 - 1), 1)

.计次循环尾 ()

.如果真结束

.子程序 _选择框1_被单击

.如果真 (到整数 (编辑框1.内容) > 99999 或 到整数 (编辑框1.内容) < 1)

信息框 (“请输入1~99999的整数!”, 0, )

选择框1.选中 = 假

返回 ()

.如果真结束

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

.局部变量 偏移1, 整数型

.局部变量 偏移2, 整数型

.如果真 (到整数 (编辑框4.内容) > 10 或 到整数 (编辑框4.内容) < 1)

信息框 (“请输入1~10的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址1 + 进制_十六到十 (“768”))

偏移2 = 内存_读整数型 (pid, 偏移1 + 进制_十六到十 (“144”))

内存_写整数型 (pid, 偏移2 + 进制_十六到十 (“24”), 到整数 (编辑框4.内容))

.子程序 _滑块条1_位置被改变

编辑框2.内容 = 到文本 (滑块条1.位置)

.子程序 _滑块条2_位置被改变

编辑框1.内容 = 到文本 (滑块条2.位置)

.子程序 _滑块条3_位置被改变

编辑框3.内容 = 到文本 (滑块条3.位置)

.子程序 _滑块条4_位置被改变

编辑框4.内容 = 到文本 (滑块条4.位置)

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框6.内容) > 10000 或 到整数 (编辑框6.内容) < 1)

信息框 (“请输入1~10000的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“1F8”), 到整数 (编辑框6.内容) + 1000)

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框5.内容) > 10000 或 到整数 (编辑框5.内容) < 1)

信息框 (“请输入1~10000的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“1FC”), 到整数 (编辑框5.内容) + 1000)

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框7.内容) > 10000 或 到整数 (编辑框7.内容) < 1)

信息框 (“请输入1~10000的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“228”), 到整数 (编辑框7.内容) + 1000)

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框8.内容) > 10000 或 到整数 (编辑框8.内容) < 1)

信息框 (“请输入1~10000的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“230”), 到整数 (编辑框8.内容) + 1000)

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

信息框 (“本程序由陈哥编写” + #换行符 + “QQ:1954458124” + #换行符 + “”, 64 + 256, “关于”, )

.子程序 __启动窗口_创建完毕

.子程序 __启动窗口_将被销毁

.子程序 _关闭_被选择

销毁 ()

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框9.内容) > 9999 或 到整数 (编辑框9.内容) < 1)

信息框 (“请输入1~9999的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“2C”), 到整数 (编辑框9.内容))

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

.局部变量 偏移1, 整数型

.如果真 (到整数 (编辑框10.内容) > 9999 或 到整数 (编辑框10.内容) < 1)

信息框 (“请输入1~9999的整数!”, 0, )

返回 ()

.如果真结束

偏移1 = 内存_读整数型 (pid, 基址2 + 进制_十六到十 (“82C”))

内存_写整数型 (pid, 偏移1 + 进制_十六到十 (“F4”), 到整数 (编辑框10.内容))

.子程序 _滑块条5_位置被改变

编辑框10.内容 = 到文本 (滑块条5.位置)

.子程序 _启动不冷却时间种植_被选择

选择框2.选中 = 真

.子程序 _滑块条6_位置被改变

编辑框9.内容 = 到文本 (滑块条6.位置)

.子程序 _滑块条10_位置被改变

编辑框6.内容 = 到文本 (滑块条10.位置)

.子程序 _滑块条9_位置被改变

编辑框5.内容 = 到文本 (滑块条9.位置)

.子程序 _滑块条8_位置被改变

编辑框7.内容 = 到文本 (滑块条8.位置)

.子程序 _滑块条7_位置被改变

编辑框8.内容 = 到文本 (滑块条7.位置)

再插入一个“程序集1”,代码如下:

.版本 2

.程序集 程序集1

.子程序 内存_写整数型, 逻辑型, 公开, 写入四字节数据(成功返回真,失败返回假)

.参数 进程ID, 整数型, , 进程ID

.参数 内存地址, 整数型, , 内存地址

.参数 要写入的值, 整数型, , 写入数据

.参数 写入类型, 整数型, 可空, 默认为1 0=短整数型 1=整数型 2=长整数型

.局部变量 局_进程句柄, 整数型

.局部变量 a, 整数型

.局部变量 局_长度, 整数型

.如果 (是否为空 (写入类型))

局_长度 = 4

.否则

.判断开始 (写入类型 = 0)

局_长度 = 2

.判断 (写入类型 = 1)

局_长度 = 4

.判断 (写入类型 = 2)

局_长度 = 8

.默认

.判断结束

.如果结束

局_进程句柄 = OpenProcess (#PROCESS_ALL_ACCESS, 0, 进程ID)

a = WriteProcessMemory_整数型 (局_进程句柄, 内存地址, 要写入的值, 局_长度, 0)

CloseHandle (局_进程句柄)

返回 (a = 1)

.子程序 内存_读整数型, 整数型, 公开, 读取整数型数据(返回整数内容 失败返回0)

.参数 进程ID, 整数型

.参数 内存地址, 整数型

.局部变量 临时整数, 整数型

.局部变量 操作句柄, 整数型

操作句柄 = OpenProcess (#PROCESS_ALL_ACCESS, 0, 进程ID) ' 取得操作句柄

ReadProcessMemory_整数型 (操作句柄, 内存地址, 临时整数, 4, 0)

CloseHandle (操作句柄)

返回 (临时整数)

.子程序 进程_名取ID, 整数型, 公开, 通过进程名取进程ID;失败返回0

.参数 进程名, 文本型, , 取要进程ID的进程名

.参数 是否区分大小写, 逻辑型, 可空, 默认为不区分,真=区分

.局部变量 局_进程信息, 精易_进程信息列表

.局部变量 进程快照, 整数型

.局部变量 进程句柄, 整数型

进程快照 = CreateToolhelp32Snapshot (2, 0)

.如果真 (进程快照 = 0)

返回 (0)

.如果真结束

局_进程信息.dwSize = 512

进程句柄 = Process32First (进程快照, 局_进程信息)

.判断开始 (是否区分大小写)

.判断循环首 (进程句柄 ≠ 0)

.如果真 (到文本 (局_进程信息.进程名称) = 进程名)

CloseHandle (进程快照)

返回 (局_进程信息.进程ID)

.如果真结束

进程句柄 = Process32Next (进程快照, 局_进程信息)

.判断循环尾 ()

.默认

.判断循环首 (进程句柄 ≠ 0)

.如果真 (到小写 (到文本 (局_进程信息.进程名称)) = 到小写 (进程名))

CloseHandle (进程快照)

返回 (局_进程信息.进程ID)

.如果真结束

进程句柄 = Process32Next (进程快照, 局_进程信息)

.判断循环尾 ()

.判断结束

CloseHandle (进程快照)

返回 (0)

.子程序 进制_十六到十, 整数型, 公开, 将16进制文件转换到10进制数值(返回十进制数)

.参数 文本, 文本型

.局部变量 i, 整数型

.局部变量 t, 文本型

.局部变量 结果, 整数型

.局部变量 局_文本, 文本型

t = “0123456789ABCDEF”

局_文本 = 到大写 (文本)

.计次循环首 (取文本长度 (文本), i)

结果 = 结果 × 16 + 寻找文本 (t, 取文本中间 (局_文本, i, 1), , 假) - 1

.计次循环尾 ()

返回 (结果)

最后添加一个“DLL命令定义表”:

.版本 2

.DLL命令 OpenProcess, 整数型, , "OpenProcess", 公开, 打开进程

.参数 进程对象, 整数型

.参数 继承句柄, 整数型

.参数 进程标识符, 整数型

.DLL命令 WriteProcessMemory_整数型, 整数型, "kernel32.dll", "WriteProcessMemory", 公开, 内存写整数,有传址

.参数 hProcess, 整数型

.参数 内存地址, 整数型

.参数 数据指针, 整数型, 传址

.参数 数据长度, 整数型

.参数 实际写出长度, 整数型

.DLL命令 ReadProcessMemory_整数型, 整数型, "kernel32.dll", "ReadProcessMemory", 公开, 内存读整数,有传址

.参数 hProcess, 整数型

.参数 内存地址, 整数型

.参数 数据指针, 整数型, 传址

.参数 数据长度, 整数型

.参数 实际写出长度, 整数型

.DLL命令 CreateToolhelp32Snapshot, 整数型, , "CreateToolhelp32Snapshot", 公开, 创建进程快照

.参数 falg, 整数型

.参数 id, 整数型

.DLL命令 Process32Next, 整数型, , "Process32Next", 公开, 取下一个进程

.参数 h, 整数型

.参数 p, 精易_进程信息列表

.DLL命令 Process32First, 整数型, , "Process32First", 公开, 取第一个进程

.参数 h, 整数型

.参数 p, 精易_进程信息列表

.DLL命令 CloseHandle, 逻辑型, "kernel32", "CloseHandle", 公开, 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError

.参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;