上期我们通过WIFABLE来访问代码的方法已经试过了,是可行的。那么本期教程呢,我们先来看一下上期教程没有分析完的部分。当时我们访问这个背包对象的话,他访问的两个地址就是这两个地址。我们可以先来重复一下这个过程,再去找这个技能的扩展。所谓的技能扩展的话,它不止一个扩展点,可能有内存上层还底层,可能有几个地方都是可以调用这个功能的。还有主包,这都可以。所以说,并不是说只有一段代码能够实现调用这个技能。我们先把这个关掉,关掉之后呢,我们先来重复一下,这个也不需要我们有个浅显的了解就行,后边还会深入的讲虚函数的。那么上期教程我们是用虚函数的方法,第一次我们尝试用数组对象,在查找的是失败了,那么我们重新来完成一下。虽然难度可能会稍微高一点,但我们不会失败的。这条路肯定是可行的。现在我们以打坐技能为例,重新附加进去。WIFTABLE这个方法我们已经使用过了,我们还是以访问背包对象为例。背包对象始终只有这两个地址。我们使用了技能之后,并没有新的代码出现。但是这两个地址我们已经取出来了,一个是52D0,另一个是4D39。然而,前一个地址我们已经分析过了,并不是我们要找的。所以,这节课我们实际上从第二个开始分析就可以了。接下来我们交给Debug。方法上一节课我们简单提到过,就是先转到这个地址,然后移到函数的头部。另外一个地方是这个扩展的地方,获取快捷栏对象一的库。这是获取快捷栏对象一的地方。另外还有一个地方获取对象是二。这个地方应该是对的。我们移动到另外的地方,然后将这个名字标记进去。这个地方通过你看从下边,有个调用。原来看的话,调用它的地方非常多。其中有一个调用源可能就是我们在使用技能的时候去调用的那个代码的地址。你看这里它显示的引用地方非常多。我们要对这里面的每一个扩展下一个断点,但是有一个快捷的方法,就是直接去查找这个地址就行了。就是前面的41420这个地址点右键,然后搜索当前模块。一定要搜索当前模块,你可以直接填这个标签,然后去搜索就行了。这样的话,我们就找到很多来调用这个获取对象二的函数。我们给它们全部下一个断点。但是因为我们说了,所有的这个技能扩,在使用的时候会去访问这个技能对象。技能对象有两个括号,一个快捷栏对象一,一个快捷栏对象二都能够去访问。所以我们只要在这个地方上下断点,他应该就能够找到我们技能对象使用库的附近。我们在上面下个断点。但是像这种马上就断下的,肯定就不是我们所要的。比如说,这个地方马上就断下,这种断点我们要取消掉,只有当我们去使用快捷栏的时候才断下,才是我们想要的。我们可以先移动一下,比如说我们指向他。这个时候没有断线,对吧?你看还有很多地方没有断线,对吧?如果我们右键点击,这个时候应该也会去访问的,但是这个时候他没有访问到,可能与我们之前的那个获取对象一有关系。那么我们现在按数字一试一下,按数字的移之后,马上他断线了。看到没有,断在哪里啊?这就是我们上期教程分析的那个wife table,那个扩的上边是吧。所以说我们从这种方式的话也能够找到。你看只要这里我们分析到它获取到进来的对象,然后这里调用WIFTP,那么找到的实际上是同一个地方。是同一个地方,只是说我们找的方式不一样而已。我们把它给拷贝下来,这个方法对了的话,我们就找得非常的快。那么一下子就对应到了同样的这个。我们上一节课已经测试过了,测试过了。那么还有剩下的还有时间啊,我们可以分析一下这个封包。从封包这个地方来回复,我看能不能够定位到其他的一个调用技能的方法。因为调用技能的话,一般它会从我们的这个快捷栏对象里面。快捷栏对象里面的话,它应该存在一个偏移。这个偏移是多少,我们现在不知道。那么这个偏移的话,他可能就是我们做的技能的id。那么只有这个id发给服务器之后,那么服务器才知道你是用的哪一个技能啊,就像我们技能的身份证编号一样,就像我们人的身份证编号一样。每一个技能呢,它都有有一个独立的数字编号,要么是135792468十这种独立的一个整数的数字编号。那么基本的对象的话,下面它应该存在这样的一个偏移,然后存在一个技能的这个id。那么这个id,最终呢他要么是通过SD或者send to ws,要不是通过这四个函数呢,都是靠节制相关的函数,一般式的用的比较多一点,说的就是这个陌生的to和ws a send to的啊,这两种比较少,我现在做的是比较少的,就用剩下的和这个WS的来作为我们与服务器通信发包的比较多常用的发包的套接字。发包也就是我们经常说的封包。如果他有存在这样的一个更加底层的破的话,它应该与我们这个虚函数是有关系的。我们可以跟到这个虚函数里面去看一下。不是这个啊,这个是获取我们背包对象的。我们继续往下走。额执行到这个虚函数里边。这个时候呢我们按F7,按F7,F7呢,它是不进就会进到这个框里面去执行。F7好,执行到这个框里面之后,我们看一下他有没有去把这个对象啊,我们看一下对象的话,现在是放到了什么,放到了EDI那边去了,EDIC进来,对象也是同时也是这个E4XE4X的话,它放到EDI了,我们重点跟EDIEDI,那么在前面这个是我们的角色对象,这个我们之前分析过的加1C加一把角色对象,之前分析过的好。我们看一下EDIEDI的话,到了这里,到了这里好像又进到这个虚函数里面去了,然后我们按F8向下走啊,走到这个这个地方的话,我们先把它弄好,可能与发包有可能是相关的,在这里下个断点,然后转到SD这里,我们看一下他会不会去调用SD,这就是我们的SD发包,然后按减号退回来对称的这个断点,下了断点之后,其他的断点实际上我们可以可以删除掉了,其他很多的断点我们可以删除掉,删除掉之后,我们只需要对这个SD这个地方下断,然后按减号退回来,退回到这个地方,然后我们按下F8没有去访问,继续F8走一下,那么这里有一个ex ex呢,它是1EX等于ESI加804,这个ESI我看是多少,会不会是我们的背包对象,EDI才是4801,SI又是从哪里来的,SI与EDI有没有关系,ESI这个角色对象啊,从前面这里来看的话,是不是ESI对角色对象加804,这个是什么意思,没看清。我们再继续看一下他,好像这里他没有涉及到发包的,已经过了。重新在这个地方下载断点,我们把剩的那个地方的断点看一下有没有断点,这个地方下注断点,这里倒是没有显示出来,我先跑一下,他这个断点列表出了点问题,没有正常的显示,但这个地方我们是下了断点。先把这个断点先取消掉,先跑起来,跑起来之后,我们这个时候已经断开了,断开了是调用不到四的。这个地方我们再来分析一下。3f7 g。我们按减号退回到这个地方来。这个是调用我们的技能栏对象的那个虚函数。那里,我们再次按下键盘上的一。这个时候我们转到顺德这里。下个段按减号退回来。退回来之后呢,我们按F8。正常情况下的话,这个Wi-Fi table这里边的调用技能的话,一般都是要与服务接通信的。那么我们看一下有没有。如果按F8的过程当中,他断到圣德那里了,说明他发包了,但是这个地方没有很奇怪的。我们继续往后走一下。按F9,按F9的话,虽然说有一个发包,不知道有没有关系好。
我们从它一层一层的返回上去看一下。那么首先呢我们把这个断点取消掉。然后呢先返回到我们的用户代码,先返回到用户代码好,就返回到这里。这里是发包是吧。然后呢我们再返回到它的上一层。这个时候我们一般按CTRLF9,再按一个CTRLF9。那么这里有个虚函数,不知道是做什么的。先给他标记一个数字。再按CTRL快捷下载。直接这里有一个地方,我们这几个地方都跟他下段。下段首先给他做一些标记。然后CTRLF9继续返回上一层。一层一层的发这个标记。下个段CTRLF键一层一层的。
然后这里我看有一些提示,是一些什么一层一层异常的提示。我们不管它了啊。这里我给他备注一下这个断点。然后再返回上层啊。这个时候呢回不了了,返回不了啊。这个地方呢他一直在被调用,剩的伤这个地方也,阿包这条路好像不太好走通。再重新来一下,我们直接在胜者下段看有没有心跳包。没有心跳包的话,我们可以快速的,但是切换到游戏的时候,他这里就断线了啊。我们看一下啊,跑起来之后,我们再移动到窗口,游戏窗口上了,他这一移移动过去了,他有一个心跳框,这个时候就断一下。
我们先看一下心跳包,它是从什么地方来的。心跳包的吗,啊这个分包的话,我们到稍后的地方再来分析风暴呢。这个的话我们的突破口呢,一般是喊话的那个扩啊,因为喊话内容的话它是明文的比较好跟。
但是这个喊话的我们通过喊话的扩,然后找到这个明文发包的扩,再来研究它与这个技能栏的关系。应该它们都是有关系的,因为我们使用技能的话,他应该是要向服务器发送指令的。只是说这个游戏呢,他有心跳包,就是说你没有任何动作的时候,他也会发一些无用的包。
那么我们直接啊很难直接的做这个分析。所以说呢,下期教程我们再分析这个分包,相关的关于主包的这些相关的这些扩展。到下期教程再分析。从我们的这个技能栏使用这个作为突破口的话,并不是很理想。从目前的情况来看的话,好,那么本期教程我们暂时到这里。