植物大战僵尸修改器DIY(一)[转]Sendige

又偷懒的好久,美滋滋。本来这次准备做一下CS1.6的修改,但是考虑到如果要修改CS,必然需要讲到注入的方法,我们又还没有讲到注入,然后今天又发现动画区有人做了一个CS1.6的视频,得,我们还是继续基础班吧,哈,学好了基础,我们再去玩玩1.6,可以做出更多有趣的功能。

如果想随时开关,就像外挂一样,那就需要使用注入了,就是我们今天要了解的内容。

欢迎文明转帖,请注明出处丸子de爸爸。

所有技术只用于学习研究,请勿用于商用,请支持正版。

项目开发中需要用到的工具:CE6.7(CheatEngine)

植物大战僵尸游戏本体(不同版本可能出现不兼容,以后也会讨论有兼容的解决办法)

内存,一切皆内存,我们操作的全部都是内存。

如果实在搞不明白,你想想指南针为啥指向北边,为啥叫南北,只是定义,只是公认

简单理解,就是exe运行起来,加载到内存中的时候,系统分配给exe的首地址。

也可以理解为,内存是一个柜子,一共有40格,exe运行,系统把exe放到了第30格,然后模块地址就是30。

以阳光为例,由于内存是动态分配的,我们每一次搜索存放阳光的内存地址都会不一样。

基址,就是指每一次分配我们都能通过偏移,来找到动态的地址,一般是由模块地址+固定的偏移实现。

例:我知道阳光在内存中存放地址,是模块地址+400的内存位置,所以阳光基址就一定是模块地址+400。所以动态就变成了,30格的时候,30+400。在40格的时候,40+400了。

指针其实就可以理解成外号,你的外号叫二狗子,别人先知道你的外号,然后熟悉了才可以根据外号找到你的真名。

更多的用处是引用,就像别人往往更愿意叫你二狗子,而不愿意叫你真名一样。

例:一个指针叫做point,他指向内存的0xFF923200。那他就可以有两个作用,一个就是直接使用指向的内存地址FF923200;另一个可以直接查到FF923200里的值。

写出这个基础概念的时候,我就发现自己被自己坑了。暂时简单理解成,就像我们更改exe一样,在适当的地方,更改程序的跳转,使它执行我们需要的逻辑。

PS:有兴趣的可以自己去查一查,这个要讲我真的是讲不来,太多要讲了。

AA脚本全称:AutoAssemble脚本,自动汇编脚本。可以理解为一个预先编辑好的逻辑,在适当的时候使用软件调用,就可以达到修改程序内存的作用。

此处仅介绍两种方法:

由于每次运行程序,内存都会动态分配,所以阳光在内存中的地址也会变化,于是我们需要尝试找到稳定的参照物。模块地址便是我们的着手点。

所谓的模块地址,就是exe加载到内存的时候所在的地址,他一般由进程名(模块名)+固定偏移组成

例:PlantsVsZombies.exe+2EF1A

由于模块地址是根据进程地址进行偏移,所以相对稳定(当然,目前没有发现不稳定的情况,但是话不敢说满),我们通过模块地址指针进行偏移,就可以得到阳光的相对地址。

由于设计到多重指针,比较复杂,下图中的阳光地址用A1代替

A3如果不是,继续向下寻找,直到找到模块地址。第一次选择改写,是为了方便定位到第一个指针,不然访问阳光的指针很多,很难定位

打开游戏和CE,点击CE中左上角小电脑选中游戏进程“PlantsVsZombies.exe”

可以看到目前的阳光数量是150,我们在CE中输入150,按下首次搜索,如图,会出现一大堆结果

回到游戏,种植一颗植物,阳光减少。

回到CE,将数值改为50,点击再次搜索

结果变为了1个,双击列表中的结果,将结果添加到CE下方

双击数值数字那一栏,在弹出的框中改为500,确定

回到游戏,查看阳光数是不是变成了500,若没有,请重复之前操作。

若游戏内阳光变为了500,则说明阳光地址查找成功,记录地址,我这里是2DD89670

右键列表中的地址,选中“找出什么改写了这个地址”

不要关闭此窗口,回到游戏,种一颗植物或者收集一个阳光,让阳光发生变化

阳光变化后,回到CE,可以发现多出一条记录(我这里是收集了一个阳光,怕不一致的可以照着来)

双击记录,弹出窗口,记录红框位置的数据指针2DD840F8,偏移5578

勾选Hex,在搜索框中输入上一步找到的指针,开启新的搜索,我这是2DD840F8(每人都会不一样)

又出现了一大堆结果,这时不要关闭当前CE,再另外打开一次CE,开启一个新的CE程序,下文按先后顺序代称为CE1,CE2。

同时在植物大战僵尸游戏中,选择“菜单”-->“重新开始本局游戏”

此时你会发现,在CE1中,之前的阳光地址已经对不上了,因为阳光地址已经动态改变

切换到CE2,按照前面的方法,找到并记录新游戏的阳光地址,我这里是2DFBEDD8,方法不重复演示了

找到后可以关闭CE2,重新切换回CE1

点击手动添加地址,导入在CE2中记录的新阳光地址,点击确定

双击描述文字,可以对地址进行重命名

对新地址进行改写跟踪,按照前面的操作,找到新地址的指针为2DFB9860

在搜索栏中,输入新的指针,点击再次搜索,得到3个结果

我们可以看3个结果的地址,Windows中从004以后,才是用户的程序,所以,我们要找的就是第三个024BAE98

双击添加到下面列表中

这一次右键,然后就要选择访问了

点完访问是不是惊呆了,好多东西吧,没事,现在不需要你弄懂,你只要选靠前的几个mov中的其中一个双击

是不是看到了熟悉的东西,和之前类似,记录下红框内容,指针024BA630,偏移868

新建查询,上一步的指针024BA630,在1000多个里面,发现有几个绿色的,对了,这就是模块基址了

分别查看4个地址的访问,只有其中一个是一直在被访问的,仍然是选择最前的mov,打开后如图

可以发现,我们已经很明确的找到了模块基址,我这里为PlantsVsZombies.exe+355F28

终于到了最后一步,仍然点击手动添加地址

按照之前我们找到的指针反过来写,最下面写模块基址,然后第一个偏移量是之前找到的868,接下来是5578

可以看到在地址那栏已经显示出了指针指向的地址,值为75,点击确定

可以看到,我们的指针已经指向了目前阳光的地址

接下来可以重新开始本局,会发现仍然是能够正确显示阳光值,这里就不截图了

删除掉其他多余的项目,只留下阳光地址指针,便可以通过修改数值,达到修改阳光的目的了

整体逻辑按照流程图执行,中间之所以会选择改写地址,是因为多余地址很多,通过多次数据对比,来筛选出和阳光有关联的指针。你如果愿意一个个去试,只要耐心够,也可以找到。最终的结果为:

通过当次反推,一层层拿到基址。再从基址往回偏移,拿到最后每一次动态的地址。

我们在游戏第一次访问阳光地址的时候,将阳光的地址纪录下来,然后存到自己申请的内存地址。之后我们直接读取自己的内存地址就行。

使用人造指针流程就简单很多,在访问阳光的指令前执行脚本,将地址导出到人造指针给外部调用,难度主要是在自动汇编上。

先按照基础方法找到本次游戏阳光地址

找到阳光地址之后,查看什么访问了地址。选中mov那行,点击反汇编程序

汇编语句这里不着重介绍,大家只要知道,add是两数相加;mov是赋值语句,相当于mova,b就是a=b

这里我们使用赋值语句,根据之前的学习,我们知道这句代码意思是将阳光值,赋值给EAX寄存器

PS:汇编语言基础大家可以稍微去找找资料,熟悉基础指令,但是想制作修改器,它是必学的。

进入内存浏览器之后,ctrl+M能显示模块地址,可以看到很多的模块地址

默认选中的那一行就是我们需要找的地址

选中在工具中,选择自动汇编

打开自动汇编后,模板中先选择“CT表框架代码”,再选择“代码注入”

[ENABLE]//脚本启动标志alloc(newmem,32)//alloc为申明内存空间,alloc(分配的内存标签名,申请字节数)label(returnhere)//申明标签,用做跳转label(originalcode)label(exit)newmem://这里让你写自己想要写的代码标签originalcode://这里是原来的代码标签moveax,[edi+00005578]exit://退出执行的标签jmpreturnhere"PlantsVsZombies.exe"+9F2E5://注入的代码段地址,当前是模块地址jmpnewmem//跳转到newmem标签nopreturnhere:[DISABLE]dealloc(newmem)//释放内存空间"PlantsVsZombies.exe"+9F2E5:moveax,[edi+00005578]选择完之后会生成上面的脚本。

AA脚本的执行顺序是,先找到注入代码的地址段,开始执行,之后按照从上往下逐行执行

手动添加pointer指针,即可得到动态的阳光地址

人造指针虽然涉及到自动汇编,但是在整体逻辑方面和工作量方面比基址方式要少得多,建议大家多多使用

注意造指针时,一定要选择访问地址,而不是改写,不然就只有在改写的时候会触发指针赋值了

获取基址只是开始修改的第一步,有了基址,我们便可以更改其中数值达到修改器的功能。

同时我们也可以通过注入的方式,修改程序代码,就像外挂那样,或者说,这已经是外挂了。

下章我们是继续挖掘植物大战僵尸新功能,还是直接使用易语言做辅助呢?留言吧...

THE END
1.植物大战僵尸杂交版:开局一个礼盒机挑战三列僵尸罐子!斗地主:最巅峰三大高手世纪大战!开局三炮亮剑!结局逆天翻盘 游戏解说虫子 2跟贴 打开APP 斗地主:十年难遇最离谱大贪官!三炸决战紫金山!两炮铁牌贪上瘾 游戏解说虫子 35跟贴 讲真,是球网先动手的!!! 新媒体 论背景音乐的重要性!! 新媒体 旁边有个抢活的…怎么办?人都过去了? 新媒体 多喝热水,热水...https://m.163.com/v/video/VVGO4HGRD.html
2.二狗子玩的所有游戏最新大全二狗子玩的所有游戏下载分享在二狗子玩的所有游戏中,他经历了无数精彩的冒险和刺激的挑战。这些游戏带给他无尽的乐趣和快乐,并让他陶醉其中。二狗子的游戏世界充满了惊喜和惊险,每每参与其中,他都能体验到一种独特的激情。在这些游戏中,他可以扮演各种角色,如勇敢的战士、聪明的侦探、敏捷的赛车手等,展示自己的技能和智慧。这些游戏丰富了二狗子...https://www.wandoujia.com/bangdan/552671/
3.植物大战僵尸无限内购无尽版手游激活码下载植物大战僵尸无限内购无尽版是一款有着非常经典玩法的手机游戏,这里经过全新的升级有着全新的战斗场景、全新的植物怪物、还有全新的玩法道具,给到广大忠实的粉丝全新的游戏体验,并且该版游戏已经完美破解,喜欢的玩家快来体验。 植物大战僵尸无限内购无尽版测评 植物大战僵尸无限内购无尽版玩起来很过瘾,各种模式玩着超刺激...https://m.danji6.com/game/1893666
4.酷狗视频:我的世界植物大战僵尸生存第一期:史上最强小推车迷你世界:植物大战僵尸的地图?不过植物变成了真人! 残念 《迷你世界》怪物来打南瓜,我要保护南瓜,能成功吗? 奥特小哥哥 《迷你世界》狼人躲猫猫!我用三段跳躲在无敌点位! 小叮当 迷你世界:辣条是乞丐,却被刺客追杀?原来他是失忆的刺客伍六七 过客 迷你世界:狗蛋入狱了,二狗子入狱了,他俩能逃走吗? 遥遠的記憶我...https://m.kugou.com/mv/2q1cm7f.html
5.植物大战僵尸在奥特曼世界小说相关列表在飞卢小说网喜欢看植物大战僵尸在奥特曼世界小说的网友,还喜欢看的小说精彩推荐!https://wap.faloo.com/look/1/484565/1.html
6.潜艇伟伟迷的植物大战僵尸视频都好有趣[憧...来自闰土螺旋叉猹...潜艇伟伟迷的植物大战僵尸视频都好有趣 ?收藏 转发 评论 ?赞 评论 o p 同时转发到我的微博 按热度 按时间 正在加载,请稍候...ü 简介: 大家都是会呼吸的尸体罢了,戾气就别太重了,我真的再也不玩抽象了 更多a 微关系 她的关注(324) 二狗子出击 -我再也不玩...https://weibo.com/7283431781/NjLKWbehW
1.二狗子玩游戏植物大战僵尸二狗子玩游戏植物大战僵尸 狗丹和二狗子其实是两个人,每个人都有一个小账号,而且他的账号不一样。 Q2: 迷你世界植物大战僵尸沙漠版的作者是谁? 你先打开游戏,然后打开修改器,点击开始界面。不要再输入了。此时切换到修改器。按水平,然后跳跃。确保将游戏界面保持在屏幕前。被修改器挡住也没关系。如果僵尸的手在...https://pvzbaike.com/?p=4726
2.植物大战僵尸原版怎么刷金币金币修改代码在这款游戏中可以通过花园获取到二狗子金币,这个属于养成玩法,在游戏中可以建造个花朵,这些可以不断拿到很多的金币奖励,相比其他游戏简单很多,差不多10分钟就能拿到1000左右的金币,这个非常省事。 金币修改代码 想要修改数据需要先下载一个修改器,这里推荐植物大战僵尸修改大师,这个网上寻找下就能...http://www.7724.com/YouXiZiXun/news/152853.html
3.植物大战僵尸威化版手机版2024下载二狗子升仙5.0MB安卓手游 骗子酒馆安卓版87.3MB安卓手游 火柴人弹跳大师59.8MB安卓手游 战鼓之翼手游964.4MB安卓手游 四海一商免广告127.2MB安卓手游 终极狮子模拟器2手机版130.9MB安卓手游 樱花女孩海底跑酷60.1MB安卓手游 软件介绍下载地址 植物大战僵尸威化版手机版是一款经典人气游戏植物大战僵尸二次创作而成的手游,对...https://www.pc0359.cn/downinfo/548955.html