小白用ce改植物大战僵尸阳光
本帖最后由 YyY.Jl 于 2018-7-5 17:09 编辑第一次发帖,多多请教
直接搜索阳光:50,然后返回界面随便种一颗
再次搜索阳光:25
然后随便修改成99999
看来就是这个地址
然后右键点是什么改写了这个地址,回到界面随便种一颗植物得到一个地址
这个hex一定要点,
还剩这么多地址,我就重新进游戏。重复上面的步骤得到阳光的另外一个地址
再次搜索新的地址,剩下3个地址
按常理来说一般00xxxxx的都不是我们要找的地址,所以只剩下最后一个了
添加地址
重复上面的步骤,不过这次是什么访问了这个
找到了你头顶的颜色,这个可是好东西,一般是第一个。
重复上面的步骤
终于找到了
重开游戏
附上成品用ce做的。:链接:https://share.weiyun.com/5pvhVuX 密码:ursfj3
游戏下载链接:https://share.weiyun.com/59Ylovf 密码:tv7gm3不是安装包,是程序。
用注入法修改,寻找什么改写了此地址,然后花点阳光,找出修改指令,nop掉,就不扣阳光了。
优点是无需找基址。缺点嘛 ,就是可能导致别的什么东西也无限。 本帖最后由 wangyujie96 于 2018-7-6 22:46 编辑
YyY.Jl 发表于 2018-7-5 15:52
可是你只要重开游戏就不行了,怎么做辅助
找到的指令如果是类似 PVZ.exe+abc123 的地址,直接用自动汇编->模板->全部注入就行。如果是abcd1234的这种地址 就用 AOB注入(寻找特征码)。然后在自动写好的代码里面把写入阳光的指令删除。
自动汇编 写好后点击 文件->分配到当前CT表,就变成可勾选的了,勾选=启用修改。。。
在CE主界面点击表单-》显示CT表的Lua脚本,填入 getAutoAttachList().add("pvz.exe")。就可以自动加载pvz.exe而无需手动选择进程。CE主菜单编辑->设置->常规设置 最底下勾选 “选定其他进程自动附加”。好了 ,差不多我会的修改器制作知识都写出来了。,。。。
比如以下代码就是不扣阳光的ct,这个ct效果等于nop掉写入阳光的指令。是我精简过的。可复制后在CE的表里直接右键粘贴。没完全测试,不过年代这么久远的游戏应该没坑。
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>"种植物不扣阳光"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : PlantsVsZombies.exe
Version:
Date : 2018-07-06
Author : Yujie
This script does blah blah blah
}
"PlantsVsZombies.exe"+1BA76:
db 90 90 90 90 90 90//把原来的6个字节的指令替换成90,意思是nop
"PlantsVsZombies.exe"+1BA76:
db 89 B7 60 55 00 00 //还原
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
顶帖!!!!! 我唯一看得懂的一个帖子 虽然N年前就会的东西,但胜在楼主一片赤诚发帖 顶下 wangyujie96 发表于 2018-7-5 15:26
用注入法修改,寻找什么改写了此地址,然后花点阳光,找出修改指令,nop掉,就不扣阳光了。
优点是无需找 ...
可是你只要重开游戏就不行了,怎么做辅助 E语言锁阳光源码一枚。不同版本 改基址偏移就能用咧
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 _时钟1_周期事件
.如果 (进程是否存在 (“PlantsVsZombies.exe”) = 真)
写内存整数型 (进程ID, 子程序1 (), 到整数 (编辑框1.内容))
.否则
.如果结束
.子程序 __启动窗口_创建完毕
.如果 (进程是否存在 (“PlantsVsZombies.exe”) = 真)
进程ID = 取进程ID (“PlantsVsZombies.exe”)
.否则
.如果结束
' 运行 (&子程序1, 假, )
.子程序 _选择框1_被单击
.如果 (进程ID ≠ 到整数 (“”))
时钟1.时钟周期 = 200
.否则
时钟1.时钟周期 = 0
.如果结束
.子程序 子程序1, 整数型
.局部变量 第一, 整数型
第一 = 读内存整数型 (进程ID, 十六到十 (“779618”)) //基址
第二 = 读内存整数型 (进程ID, 十六到十 (“868”) + 第一) //偏移
第三 = 十六到十 (“5578”) + 第二 //偏移
返回 (第三)
不错的,没有阳光更刺激。 感谢分享! 支持小白我也是小百学习下啦谢谢楼主