ce吧 关注:196,461贴子:3,801,342

【CE扫盲系列·第七弹】CE第七关:多级指针: (密码=525927)

只看楼主收藏回复

前言:本教程使用的工具为:
Cheat Engine 7.4 64位
官网网站为:https://cheatengine.org/
如果您没有CE,那么请参考这篇教程,他会教您如何下载并安装一个CE
https://tieba.baidu.com/p/8126971048?pid=146028156375&cid=0#146028156375
本教程修改游戏目标为:
Cheat Engine 7.4 自带的默认新手教程(64位游戏),如果您没有看过前面的教程,推荐您先看完前面的教程然后再观看此次教程。


IP属地:湖南1楼2022-11-23 16:32回复
    注:本教程旨在带领新人小白熟悉和使用CE,如您应该能够熟练掌握并使用CE,那么您可以略过本教程。


    IP属地:湖南2楼2022-11-23 16:32
    回复
      这一关其实可以说是第第五关的延伸。
      第五关我们教了如果找到一个"指针",讲通俗一点就是偏移。
      但是第五关我们找到的只是一个一级的指针,第七关有些不同,它有多个指针。
      一般来说,只有一个偏移的,我们管这个叫一级指针。
      有二个偏移的,叫二级指针。
      三级往上的,我们一般统称为多级指针。


      IP属地:湖南3楼2022-11-23 16:32
      回复
        回到游戏。
        这里我们先看关卡描述
        步骤 8: 多级指针: (密码=525927)
        在这一步将解释如何使用多级指针。
        在第 6 步,你已经清楚 1 级指针的概念和用途,并可以利用数值的首个地址找到存放数据真正的基址。
        在本关中,你将看到 4 级指针,它由第一个指针指向第二个指针,再由第二个指针指向第三个指针,由第三个指针指向第四个指针,最终指向健康值的真正地址。
        开始的几步与在第 6 步中的操作基本相同。找出是什么访问了这个地址,然后分析汇编指令,查找指针地址中的数值,以及它的偏移量,将它们记下来。但这次你按数值找出的仍然是一个指针,你得依据这些数值,使用同样的操作方法找出指向这个指针的指针。看看是什么访问了你发现的那个指针地址,分析汇编指令,留意可能的代码和偏移量,并加以利用。
        持续这种过程,直到不能更进一步查找为止(通常基址为静态时,地址将以绿色标示)。
        点击"改变数值"改变健康值,
        如果你发现列表中那些指针地址所指向的值发生同样的变化时,那表示你可以试着将基址中的值更改为 5000,并锁定它,以便完成本关的任务了。
        备注1: 本步骤也可以使用自动汇编程序脚本或者使用指针扫描器加以解决。
        备注2: 在某些情况下,可以改变 CE 软件"代码查找"的相关设置。
        当你遇到类似于 mov eax,[eax] 的指令时,调试程序将显示改变之后的寄存器中的值,也许利用它更容易找出指针的位置。
        备注3: 你还在读?!当你查看汇编指令时你可能已经注意到,这些指针是在相同的代码块(相同的程序,如果你懂汇编,可以查看程序的起始代码)位置被读写。这种情况并不总会发生,但是当你在查找某个指针遇到问题的时候,没准能起到很大的用处。


        IP属地:湖南4楼2022-11-23 16:33
        收起回复
          还是用第五关我们的操作,先找到这个数值的地址。

          然后选择地址,右键

          接着点击改变数值,找到修改的指令



          可以看到,这里的偏移为18,这里要记住这个偏移,然后我们复制一下地址。到CE里面进行搜索。




          IP属地:湖南5楼2022-11-23 16:35
          收起回复
            可以看到只有一个地址,我们把这个地址拉取下来。然后右键选择 ==> "找出是什么访问了这个地址"。注意,这里不是"找出是什么改写了这个地址"。因为这里我们保存的是一个地址,不是数值了,地址只有在改变指针的时候才会修改,所以我们这里选择的是"找出是什么访问了这个地址",我们只要找到是谁访问了我们保存的这个地址就行了。

            然后回到游戏,点击改变数值。


            可以看到有两条指令出来了,我们只要关注mov那一条就行了,因为mov那一条简单的来说,就是进行赋值的指令,我们点开mov那条指令的详情信息看看。




            IP属地:湖南6楼2022-11-23 16:38
            收起回复
              这里可以发现,我们找到的这个地址,和我们之前搜索的一级指针的地址是一样。那么我们应该怎么进行下一步操作呢?
              这里请注意 CE 描述里面提到的一点:
              "当你遇到类似于 mov eax,[eax] 的指令时,调试程序将显示改变之后的寄存器中的值,也许利用它更容易找出指针的位置。"
              mov rsi,[rsi] 这条指令,这条指令是把rsi保存的值,赋值给,rsi。也就是说,rsi的原地址就是我们找到这个地址。


              IP属地:湖南7楼2022-11-23 16:39
              收起回复
                我们只要搜索这个地址就行了。注意: mov rsi,[rsi] 里面没有任何操作,所以偏移是 0,这里请记住。



                这里我们还是相同的操作。右键选择 ==> "找出是什么访问了这个地址",然后点击改变数值。



                IP属地:湖南8楼2022-11-23 16:40
                收起回复
                  注意 mov rsi,[rsi+18],这里第三级指针的偏移是18

                  接下来我们搜索一下这个地址。


                  还是只有一个地址,我们拉取下来,继续前面的操作。




                  IP属地:湖南9楼2022-11-23 16:42
                  回复
                    注意这一条。mov rsi,[rsi + 10],第四级指针的偏移是10,这里我们还是之前的操作,继续搜索找出来地址。

                    搜索这个找到的地址。

                    搜索之后,到的一个绿色的地址,这个地址就是我们要找的那个,静态地址了。我们把这个地址拉取下来。然后添加偏移。

                    接着我们填入找到的偏移。
                    一级偏移在最上面,四级在最下面。依照这个顺序填入偏移即可。
                    接下来我们把这个值修改为5000并且锁定然后点击改变指针,看看能不能通过游戏。


                    IP属地:湖南10楼2022-11-23 16:44
                    收起回复

                      OK,到这里,这一关就算过了。


                      IP属地:湖南12楼2022-11-23 16:45
                      收起回复
                        那么接下来有没有什么简单的方法可以快速找到这个基址呢?(这里介绍之前第五关的时候给给我提过的快速找静态地址的方法)
                        答案是有的,这里我们可以使用CE提供的"指针扫描"功能。
                        这里还是老方法,先找到保存数值的动态地址。


                        IP属地:湖南13楼2022-11-23 16:45
                        回复

                          然后右键,选择。对这个地址进行指针扫描。

                          这里你随便找个地方保存一下文件就行了,如果你下次还要用到的话,就请保存在自己经常用的地方。

                          保存完后,就会出现。


                          IP属地:湖南14楼2022-11-23 16:47
                          收起回复
                            这里会出现一堆地址,我们要怎么从这一堆地址里面找到我们想要的哪个呢?这里我们回到游戏。

                            点击改变指针。

                            指针改变的同时,值也改变了,我们去地址表里面搜索一下这个改变后的值。



                            这里选择之前的结果作为重新扫描后的保存结果。


                            IP属地:湖南18楼2022-11-23 16:56
                            回复

                              然后就只剩下一个结果了。可以看到,扫描出来偏移,与我们找到我偏移一模一样。
                              如果你不想手动麻烦去找的话,不妨可以试试这种方式,说不定就惊喜哦。


                              IP属地:湖南19楼2022-11-23 16:56
                              收起回复