00:00
然后看一下字体小不小啊头嗯,要实现的一个功能是呃自动呃捡取。捡取阳光。自动检取。捡取阳光,然后还有一个功能是呃,无限阳光掉落。然后我们就可以想一下了,嗯,这两个功能的话,都和这个阳光有关系,对吧,阳光有关系,所以说我们要找到我们的一个思路就是什么,主要就是要找到这个,嗯,阳光的访问信息。然后怎么找到他这个访问信息信息的话,就是我们就可以通过一个工具,叫做蜥蜴的一个工具啊,这个工具的话,他能帮我们去查看访问代码啊,帮我们啊查看啊游戏的访问代码什么意思,就是在你这个程序去编写的时候,你肯定会有代码对吧?你肯定会定出来个变量啊,这个变量的话就叫做阳光变量啊,定义出来个变量,然后这个工具的话,它就能把你这个游戏里的呃,所有关于访问阳光代码的一个位置啊都可以找到,就比如说呃,你在你在这个开发当中的话,写了一个函数啊,比如说这个增加阳光的一个函数。
01:25
然后呢,在这个位置的话,你肯定是对一个阳光进行加加嘛,或者是一个什么,你写一个减法的一个函函数啊。然后这个阳光啊进行一个剪解,那么你一个蜥蜴的话,它就能把你这两个代码的一个位置啊,给它定位到啊,这个就是一个蜥蜴的一个功能,它就能把你这个代码啊,这个位置给你定位到。那我们就可以通过这个内存搜索对吧,蜥蜴的功能啊,通过这个内存搜索功能。啊,通过阳光的一个变化数据啊,因为因为我们去种植植物的时候,它这个阳光会减减少啊,然后剪这个阳光的时候,它这个阳光会增加,所以说我们就可以通过这个变动和变未变动啊,变动未变动。
02:09
啊,去搜索到。阳光的所有访问代码。那我们就可以呃,去开始这个游戏对吧?啊,我先把这个游戏开开。啊,这个是之前写的这个多开对吧?啊,这个是之前写的一个多开啊,你可以看到我这个游戏是可以开两个的,嗯,这个回放的话,你可以去B站里看一下。那之后我先去开始这个游戏。呃,重新玩。嗯。嗯,然后的话你就可以看一下,我现在先去冲一下阳光的吧。
03:03
而且哎,我这个蜥蜴没有附加是吧。啊,我现在把那个蜥蜴去副驾一下。然后的话,现在这个阳光数是零啊,我们可以搜索零,然后我们等一会儿。当它这个阳光的一个掉落啊,现在是变成了25对吧。然后再次扫描,然后现在就变成了五个对吧,五条数据,然后我们再去搜索一下。啊,现在这个阳光数量又变成50了,对吧,然后我们再去搜索这个50。然后现在就剩了一条数据,那这条数据的话,就是我们那个阳光的一个,呃,地址啊,只是当前游戏的一个地址啊,如果你这个游戏冲开的话啊,那你这个阳光这个地址,它这个就会变的。嗯,然后你可以看一下对吧,我把这个数量改为999,然后呢,我的阳光数量它就变成了999,之后的话,我们就可以去通过查看这个地址。查看这个地址的一个访问代码啊,我们现在,那现在的话,这个访问代码的话是只有两条的,对吧,那这两条数据的话,你可以看一下它这个技术,它是一直在变的,也就说明什么游戏。
04:09
这个游戏当中的话,它会有两条代码,一直会去访问这个阳光的这个变量的一个地址,那我们还可以通过进行一个其他的一个操作啊,去让他进行一个访问代码的一个产生啊,比如说我现在去剪一下阳光,然后呢,你可以看到对吧,现在又出现了三条,那我可以什么啊,再去什么扣阳光,然后呢,他又出现了两条,那这些代码的话,就是我们这个啊游戏里啊访问阳光的所有代码。嗯,当前游戏里的。所有访问阳光代码的位置。那就这么几条,那我们想去实现我们这个功能的话,比如说这个自自动剪取阳光和这个无限阳光掉落的话,我们肯定是要找到什么,呃阳光啊,那这个位置我们肯定是要找到阳光收集的位置,对吧,阳光收集的位置,那无限阳光掉落的话,肯定是找到生产。
05:08
啊,阳光的位置。那现在的话,我们就可以通过啊这些的访问代码去搜索啊,去看看有没有啊,关于这两个什么阳光收集的位置,还有这个生产阳光的一个位置,那我就可以通过这个啊叉32D bug啊,现在我们就可以换到啊叉32D bug。啊去分析啊,这个因为蜥蜴分析的话就是比较呃费劲,没有这个debug直观啊,然后我去附加一下。然后我这个叉叉2D bug这个字体小吗?如果小的话可以调一下。然后我就可以去什么啊,挨个去分析我这些代码的一个功能,那我们先从第一条代码对吧,开始分析啊过来。当你不知道这条代码它的一个功能的情况下啊,当你分析。
06:05
数据的时候啊,不知道代码的一个功能。你就可以把这台这条代码给他废掉,就是让这个游戏里就没有这条代码,他游戏里没有这条代码的话,它这个在这个游戏的一个界面的话,它这个显示的话就比较明显的嘛,所以说我们就可以什么啊把这条代码给它弄掉。弄破掉之后的话,我们就可以回到游戏看看它哪一个地方发生变化了,那很明显它发生变化呢,就是它这个,呃,我们选选中的一个植物这个位置对吧,那我们就可以看看到现在的话,就算我的阳光它就算是够的,它这个植物它也中中不了,那这条代码对吧,我们就能大概的猜猜测出来这个位置是关于什么。冷啊冷这个冷却检测啊,可能是对吧,也可能是这个啊禁地这个阳光检测对吧。但是更明显的应该这个阳光检测对吧,因为我们是通过阳光去入手的,所以说他这个位置的话,可能是这条代码,它这个代码应该是检测你的阳光啊够不够。
07:10
那如果说我们去追这条代码,我们向上这个追对吧,通过这个调用对战的一个返回,我们能去追到什么数据,那肯定就是我们的一个外循环啊,游戏的一个主循环。啊,去追踪这个游戏的主循环。游戏的主循环。通过这个游戏主循环的话,我们能判断出来什么。他这个游戏主循环肯定是访问了什么,呃,所有的植物,对吧,为什么说是所有的植物,你可以看一下,它不仅仅是一个人,一个植物种不了,它是所有的植物它都种不了,所以说呢,这个位置的话,它肯定会有什么,嗯,循环代码。呃,访问所有的职务。然后访问出来所有的植物呢,它肯定会调用什么,把这个判断这个植物的,呃呃,阳光数量和当前的阳光数量。
08:08
啊,做对比。如果够的话,它就让你显示出来,对吧,如果这个阳光这个呃,你这个阳光是不够的,它这个位置它就不显示出来,那当前我们这个位置的话,我们就是把这条代码对吧,这个检测代码给它去掉的,所以说啊,它这个位置它是不够的,那我们这个代码是我们想要的嘛,就肯定不是我们想要的,对吧,如果说你是想要呃追去追什么啊,植物的一个宿主,或者是判断这个检测这个位置,那我们就可以去追他,对吧,那我们的第一条内码。就可以掠过了这个地方的话,你可以看到它这个地方又可以能种了,对吧,那这个位置就很明显,它是关于什么,嗯呃,它这个阳光检测的,那我们就可以去看一下第二条奶码。啊,去看一下第二条代码,来到第二条代码的话,你就可以来到。这个位置,那这个位置的话他干嘛。
09:01
对吧,我们大概看不出来啊,可以看出来他把这个阳光取出来了,对吧,然后做了一个比较啊,那具体做什么呢?我们不知道,然后呢,我们还是啊给这条代码给他废掉。飞掉之后的话,你可以回到游戏啊,很明显的一个变化就是我这个左上角这个阳光这个数量数值发生变化了,对吧。你看到我这个左上角这个阳光这个数值啊,却发生了,发生了这个变化。那这个是什么?那这个是不是就是我们那个UI界面啊。好像。好像做其他操作的话,不会影响什么,对吧,比如说我去炸一下子啊,他也不会影响什么,就是这个,呃,UI界面出现了问题,那这个。就是我们就可以大胆大胆的猜测出来了,那这个就是我们的一个真数据。游戏的整。呃,一阵两阵两个称啊。游戏帧,然后呢,和UI界面相相关,它这个UI界面相关的话,不知道我们刚才就是用这个蜥蜴搜索的时候,这两条代码,它是一直处于这个访问阶段,它这个就是一直在这个加加加加的嘛,它这个访问次数,那也就是说他一直把这个阳光进行一个格式化啊阳光格式化。
10:18
然后呢,传到这个UI界面,然后呢进行一个显示,那你想去注意这条代码的话,你会追到什么数据,就是也是同样的游戏主循环。游戏的主循环。有些主群完之后。啊,这个是我们的游戏身的嘛,你还能访问到什么啊,就是我们那个呃,植物动画对吧。啊,场景动画。啊,场景动画还有什么啊,僵尸动画。还有这个啊,子弹动画啊,就等等啊,一系列的这些操作啊,你去追往上追,去追这些东西的话,你肯定会追到这些,就是关于UI界面的一些操作。
11:08
那这条代码的话,也肯定是不不是我们想要的,所以说我们还得往下找啊,我们去找这个第三条代码。来到第三条代码的话,我们把这个给他恢复一下。然后你可以看到对吧,我们那个阳光数量都正常了。然后的话就是我们就可以来到第三条内码,来到第三条代码的话,我们就可以给他什么也是同样的弄鸟。啊,进行操作的话,好像没有什么发生变化,对吧,但是我们去。多试几回啊,然后好像也没有什么变化对吧。嗯,好像这个确实还没有什么变化啊,看不出来这条代码,然后我们看看啊剪阳光没变化。然后像这种的话,你不知道它处于就是你的代码废掉之后啊,它没有变化,那你就可以想,嗯,观看一下。
12:07
嗯。你就可以给代码恢复过来,然后你下个断点啊,下个断点之后我们进行一个操作啊,比如说我现在去加阳光啊,去剪阳光啊,它断下来了,对吧,减去阳光。转向。然后我们给它过去。然后你可以看到他好像。剪取阳光,然后他断一下对吧,那这条代码的话,它有可能是什么,和这个剪取阳光相关对吧,那这个代码的话,应该和我们那个鼠标检测有关系。啊,那这条代码就可能是和我们的鼠标检测有关系。
13:01
然后我们给这个呃,语言改成七年甲。那你这条代码为什么和鼠标检测有关系,他可能是判断啊,你当前鼠标的位置在没在阳光之上,对吧,那你这么追的话,你肯定是会追到,嗯,判断当前鼠标的位置啊,在没在鼠标之上。啊,在没在阳光之上。他肯定是判断这个对吗?如果你鼠标在阳光之上了,你去点击一下,它肯定是会收取这个阳光的,对吧。然后我们看看啊,还有没有其他端点啊,也能断下重它不断对吧。只有剪去阳光的时候,它会断下来,对吧。那这条代码的话,大概意思应该就是说什么,嗯。把这个阳光现有的阳光取出来,然后呢,和这个啊阳光啊,你捡到了一个阳光进行个相加操作,对吧,因为你这个地方的话,你可以看到有个ad。操作啊,和这个ECX加法操作,那ex是来源于什么,这个阳光的吧。
14:05
那也就是说什么,呃,鼠标剪取阳光,然后呢进行相加。他这条代码的话,嗯。和我们这个想要的也不太符合,对吧,我们想要的是阳光收集的位置,还有这个生产阳光的位置,所以说我们还得往下找。啊过来啊过来的话啊,同样对吧,这个位置啊弄破掉。然后回到游戏对吧。啊,然后这条代码就很明显了,对吧,这个代码有什么变化。你可以看到我现在去捡这个阳光数量的时候,它不加,你可以看到吗?我这个。这个剪剪裁多阳光,你可以看到它这个数量,它不往上加,那这条代码的话就很明显了。啊,这条代码的话就是,呃。
15:04
向日葵啊,就是啊,阳光啊。相加操作。阳光的一个相加操作,那这条代码的话,可能是我想要的,对吧,因为什么我们想要阳光收集的位置,对吧,那你这个阳光相加我们可以先拿出来,完了这个位置拿过来啊,然后把这个往下来点,然后我们先看一下后面这两行的吧,然后过来。我看一下啊,刚才这条代码是在A11是吧。那这个位置我们注视一下啊,阳光相加的。操作,然后我们这条代码。过来。是在这行代码对吧。那加行代码的话像什么啊,阳光取出来做了一个比较,那这个位置就很明显了,它相加完操作之后,然后呢,把这个现有的阳光数量拿出来啊拿出。
16:01
阳光的数量。然后做了一个比较,他比较什么,他比较2706这个数据,然后呢,如果小于它就跳转了,对吧,如果大于呢。如果大雨的话,他强强制给你的阳光数量啊,强制给阳光数量啊,赋值给2706,那也就是说什么这条代码的话,它会判断当你去捡取阳光之后,你的阳光数量如果大于了2700006啊,这个16进制,那十进制的话,我们看一下是多少啊。啊,我们看一下啊,这个十进制,它这个数据是多少,应该是9990,应该是我看一下,嗯。16进制的2706对应的是9990,那也就是说我们这个阳光最大的数量是这么个数据,对吧。嗯。那这个位置的话,我们应该知道啊。比较阳光啊,最大数量如果超过9990。
17:05
他就会默认的给你一个9990,那我们看一下这个位置,我们下下个段啊下个段。啊在啊这个位置,我们下个段,然后我们呢,我们去搜集个阳光。断下来之后我们F7对吧,啊,现在是小于的对吧,然后我们把这个跳转给他过去啊,那这个。嗯,我们给它弄掉。让他走,然后过来对吧,然后把这个给他恢恢复一下这个代码,然后运行过去,运行过来之后我们就可以看到对吧,他这个阳光的一个最大数量确实就是这个9990。嗯。啊,确实是这么个数据。然后的话我们就回来。回来的话,我们这两条代码它是可以放在一起的,对吧。啊,这两条代码我们完全可以放在一起。
18:01
为什么可以放在一起,因为可以想一下啊,他什么时候进行一个阳光向下的一个操作,我们如果向上追的话,如果向上去追。啊,如果向上去水。如果向上去追的话,我们会追到什么,是不是就什么时候他会这个阳光进行一个相加,肯定是呃阳光。阳光生产出来了。然后呢,嗯,鼠标检测啊。相关对吧,就是判断你确实捡到阳光了对吧,就像刚才我们找到这个代码这个位置啊,他肯定是啊,你这个鼠标已经捡到这个阳,碰到这个阳光了,然后呢,它才会进行一个相加操作,那这个位置的话,它肯定会有一个if l时的一个判断,对吧。衣服。然后呢,I。
19:03
然后把这个代码就可以放到什么位置啊,放到这个位置。然后呢,鼠标检测相关,我们可以给他拿过来,如果这个鼠标检测等于真对吧,等于这个处啊,等于捡到了你就或者换句话说就是真。它呢就会进行阳阳光相加操作,然后呢比较阳光最大数量,否则呢,它就不加呗,啊就一些其他的代码,那这个位置是不是就是我们想要的一个什么位置啊,就是自动捡取阳光这个位置。我们就。以这个方式就是内存搜索,然后呢,通过一条代码一条代码去分析,我们就大概的猜测出来了,它自动捡取阳光的位置,和这两条代码相关,对吧。那我们就可以再看看下面这两条代码有什么用,对吧,然后我们过来。过这条代码的话,好像和什么。
20:01
和刚才这段代码挺特别像,对吧,你可以看一下这段我们拷贝出来,然后呢,我们减后键回去,然后呢把这段拷贝出来。他俩这段代码有点像是吧。那这个应该是判断你这个扣不扣阳光啊,这个位置应该是我们回去,然后呢,同样的办法啊,弄坏掉。然后回到游戏里。啊,这个位置占一下。然后你会看到什么什什什么变化,刚才他是不是这个UI界面它又变了,然后我们看一下啊。什么时候变的,我去种。种完之后,它这个数据就变了,为什么会这样,那是不是就属于我们那个,呃,数据溢出了啊,那这个位置的话,弄破掉之后,它会数据溢出。那什么时候会这个数据溢出,是不是就是说你这个数据刚才我们把这个位置给它弄破掉了,那弄破掉之后的话,那你这个数据当我种阳光的时候,你这个地方是不是就数据溢出了,然后咱们给他恢复一下。
21:15
然后我们看一下,那这个位置的话,应该和这个什么,嗯。阳光相间的吧,也就是种植植物。啊,阳光啊。扣扣阳光的吧,应该是减。嗯,扣取阳光。那我们看一下这个位置是不是啊,我们下个断点,然后呢,当我们去什么加阳阳光的时候,它什么它不断,当我们去种的时候,它才会断,对吧,然后呢,我们F7过来。然后我们看一下呃,相减,那这个位置是相减的吧,有个下巴操作,那这个位置是个减法操作。然后呢,Esi是什么?是我们的一个阳光对吧。
22:00
Esi是阳光,然后呢,这个位置esi也是一个阳光。这个位置就是esi啊,阳光。啊,减去什么,我们看一下啊,减去EBX,然后我们看一下EBX什么EBX的话来源于EAX啊ebx看一下啊。啊,不过。我们看一下EPS值是多少,32,那也就是50对吧,50是什么?50是不是就刚才我中的这个向日葵啊,那也就是说这个位置。他就判断你这个,呃,判断你这个阳光够不够减,如果不够减的话,那直接就什么直接就跳转了,对吧,那这个位置就很明显了,他就是判断什么。啊,判断你阳光够不够减对吧,那那这段代码的话,你可以看到这俩这俩代码是组合起来的。那这个位置的话就是呃,如果够剪的话,它会把那个剪掉的一个阳光,也就是阳光结果啊重新复制对吧。
23:08
那他这个逻辑的话,是这么个逻辑。所以说的话,我们现在嗯,要找的话,现在能实现什么,是不是就是呃,自动捡取阳光这个位置啊,那我们就找一下呗。我们就可以回到呃,阳光千架的这个位置。然后刚才这这些代码分析的话。都能理解吗?有有什么问题没,就是刚才这段就是这七条数据的话啊,怎么去分析呢,都有问题没,没有问题的话,我就开始去。啊,去实现我们刚才要讲的这个功能。嗯。然后的话就是我们就可以回到。
24:02
这个位置呢。啊,就是阳光商家的一个操作,然后我们打个断点。然后我多去种点这个向日葵对吧。嗯,我去坐终点这个向日葵。然后现在去收集这个阳光对吧,断下来了,那断下来之后的话,我们向上找啊,你会发现它其实没有太多函数对吧,只有这一个靠。所以说啊,我们就可以返回到上一层对吧?啊,这个位置现在我们就可以返回到上一层,那返回到上一层的话,X32D bug的话就是什么,嗯。CTRL加F9啊,我们就可以返回到上一层。返回到上一层,来到上一层之后的话,就是我们来到了这个,靠,说我们刚才出来的就是阳光相加单位呢。啊,在这个位置,那在这个位置的话,你就可以看到一个很明显的一个跳转,对吧,那我我们看看我们就可以下断啊看看这个位置,我们跳过去之后,它这个阳光还能像这吗?那其实你想一下对吧,把这个啊给它弄破掉。
25:08
啊,对吧,因为我们这这在这个位置发现了一个跳转,我们就可以想一下是不是给这个no掉啊,它这个阳光就可以一直相加,那我们先看一下它这个断点啊。然后我们把这个断点过去,然后游戏过来,游戏过来的话,我们返回到游戏。啊。然后好像这个断点你可以看到,他这个断点的话,好像是一直我不知道你们能能不能看清啊,我现在就是你注意这个阳光啊,就是刚才就是在这个第二排这个阳光啊,我去运行多运行警徽,然后返回游戏,然后呢,多运行警徽你可以看到吗?它这个位置它是一直在一直在动的,一直向要往上动,那这个位置的这个判断的话,就很明显不是。它像是嗯嗯,获取就像是绘制阳光啊。就是绘制阳光什么时候到到达目的地,这种效果你可以看一下啊,一直断啊,它一点点这个阳光,它就一点点往上去啊,在这个位置,那这个判断的话,它就很明显不是。
26:11
呃,然后看着不明显的话,我就可以把这个游戏暂停给它去掉啊,我先把这个游戏暂停给它去掉,然后呢,我们来到这个主模块。当前模块,然后查找一下字符串,我先把那个游戏暂停给他去掉,要不有点不明显是吧,嗯,游戏暂停。呃,或者返回邮寄。啊,我们来到这个函数头部,把它这个游戏的一个暂停给它去掉先。然后把那个地址我先记录一下啊。然后蒋红键回来,嗯,回来之后。啊,返回游戏。啊,我先把那个端点给他去掉。然后然后减后键,然后把这个。这个给他留着,然后断点,然后我看一下啊,然后阳光增加操作啊,这个断点让他取掉。
27:05
然后我们看一下。我现在点的是这个阳光对吧,然后我一直运行。你可以看到吗?这个判断是判断的什么,是不是就判断这个阳光有没有到达他这个目的地的,对吧,所以说这个跳转的话,他就不是我们想要的,所以说我们得返回到上一层了啊,不是我们想要的。然后我们返回到上一层。那在这个位置我们去做一个什么。我们看看是从哪出来的。啊,我去捡取阳光啊,我稍等啊,我这个。跟错了有点,然后返回到这一上。然后我去捡一个阳光。啊,顿一下对吧,返回一层。返回第二层。返回第二层的话,我们就来到了这个位置,对吧。啊,这个位置就是我们出来的一个函数,那这个位置就是,嗯。
28:03
呃呃,阳光枪架。那来到阳光向下这个位置的话。你就看一下呗,有一个跳转对吧,这个跳转能跳走跳跳过去。函数,那这个呢。他这个跳过去向上一层还有个真人E对吧,那这个很明显就是我们那个if,然后呢I语句对吧,那if的一个条件是什么,If的条件就是这个位置对吧。但是我们不用管这个条件是什么,我们看一下他这个跳转,如果这个跳转。不成立对吧,如果这个不等于,不等于的话,它就会执行一个阳光性加,那等于呢,等于的话,你可以看一下,它就执行执行,然后降指令,他就跳走了,对吧,那这个位置就是跳走了。所以说我们不能往这个这段代码不能往他去跳走,也就是说这段代码。
29:05
不能让他去跳走。不能让他去跳走,那你怎么不让他去跳走,我们是不是就可以把这个真翼给他,嗯,强制性的嘛,让他蹦过来,让他蹦到这个位置。啊,你可以看到它正常不等于它是跳这的,所以说我们要把这个代码给它改掉。改成一个建MP指令。改为加MP指令的话,我们看一下现在的一个效果,可以看到。我这个阳光你看到了吗?我现在这些阳光的话,是不是就是自动去收集了啊,就不用我去解,你可以看到吗。啊,生产出来的阳光是不是就全去他这个目的地了?嗯,能看出来吗?现在这个游戏的话,这个流程是不是被我们改了对吧?嗯,就是生产出来的阳光都不需要我们去点啊,直接让他去自动收集呢。
30:06
那这个就是我们今天要实现的一个效果,然后嗯,还有一个效果是什么,让这个阳光去无限掉落,对吧。嗯嗯。然后先把这个。
我来说两句