373玩 手游攻略 新游动态 【干货】《LOL》外挂开发教程07:明文包

【干货】《LOL》外挂开发教程07:明文包

时间:2024-06-14 10:14:24 来源: 浏览:55


我们要讲的内容是关于英雄联盟游戏中的明文发包。在上期教程中,我们已经找到了英雄联盟游戏中的发包函数,但我们发现这个发包函数是在一个线程中进行的。在这个游戏中,如果你不动一下鼠标或键盘,你就会被服务器断线。这让发包变得非常重要,因为你需要不断向服务器发送信息以保持连接。发包函数的一个特点是它会频繁地断下来,而且每次发送的返回信息都是相同的,这意味着它在一个循环中不断地判断是否需要发送包。

即使没有需要发送的包,它也会在线程中持续断点访问。我们发现,在包的内容和长度上有四处访问,这在上一节课中已经讲过了。我们发现,当进行发包动作时,这四处访问中的一处会增加访问量,而其他的则不会。我们利用这个访问量的变化来继续寻找明文发包的线索。首先,我们要知道这四处访问是在发包函数的线程中进行的,这意味着我们并没有跳出线程循环。

通常情况下,要找到明文发包,我们需要跳出线程循环,比如在一个线程外进行写入操作,然后将其加密并发送到特定地址,然后线程内读取并发送。现在我们知道有一个关键的写入位置,我们可以从这里开始寻找突破口。我们首先来到这个位置,并查看包长,将包长写入到esi寄存器中。然而,我们不需要关注包的内容,而是关注包的来源。我们先看包长,不看包内容。

包内容来源于表达式ex + ecx * 8。有时候会出现这种情况,需要同时关注ex和ecx * 8。但是实际情况下,其中一个表达式往往是无关紧要的,只是用来迷惑我们的。我们可以通过设置断点来观察这些表达式的值,从而找到正确的发包位置。

在这个例子中,我们要追踪的是变量ex。我们发现,ex的来源是ex加8。继续追踪ex,我们发现ex又来源于ex加8,而这个值又来源于ebbx减2c。我们继续向上追溯,因为这里没有复杂的跳转或判断,我们可以直接分析。接下来,我们追踪到1evp减20,它的来源是ex。我们继续追踪ex,发现它还是来源于ecx加18,表达式变成了游戏中的一处动作。那么我们追踪ecx的来源,发现它来源于ebp减20,这是一个局部变量。因此,我们只需要追踪1vp减24,这是第九个局部变量。它的来源是ebp减24,这是我们需要替换为ecx的表达式,变成了ecx加18再加8。我们再次追踪ecx,发现它的来源是ex的表达式。我们继续向上追踪ex,发现它的来源是ebx加c0。我们再次追踪ebx,发现它的来源是edx。在函数的头部,我们可以看到一系列表达式,我们可以设置断点来观察这些表达式的特点。

我们发现,某些表达式没有指向任何地址,这意味着在这些表达式中间存在跳转,有些位置的值可能为空。我们可以在这些位置设置断点,观察edx的变化。我们发现,edx的值是不断变化的,它不断加上c0。在我们观察了一些值之后,我们发现edx加c0的值是不断变化的,而edx的值是固定的。这个过程可能比较复杂,但这是我们需要掌握的。如果有同学对中间的过程有疑问,可以随时提问。

在这里我们进行了分析,发现尽管包的内容是在线程中写入的,但是某一层指针的地址实际上是不变的,而其中的内容则是不断被其他位置写入的。那么我们需要做的是在上一层下一个写入段,查看哪个位置是被其他地方写入的。我们试图在县城外找到这个位置,但游戏的调试过程可能会变得相当麻烦,因为每次调试都需要重新开始游戏。

因此,我们在线程内下了一个硬件写入断点,然后立即在游戏中执行一些操作,如按下回车键,以触发发送动作。断点会在发送时触发,然后我们查看包的内容。可能我们已经断了多次,游戏可能会崩溃,所以我们需要小心处理断点,以免造成不必要的麻烦。有时候,我们可能需要重新调试,可能需要返回到上一层并重新审视情况。我们尝试了多次,但仍然没有找到跳出线程的地方。这说明,我们需要确保是因为发包而断下,这样才能进行下一步操作。另一种方法是设置条件断点,但这需要找到一个合适的位置。在这个过程中,我们需要注意观察加48的情况,或者检查整个表达式来确认我们的操作是否成功。

让我们来检查这些特征,看看是否能确定我们已经定位到了真正的断点位置。一旦确定了,我们就可以返回到那个时间点。我们应该回到线程里面,我在那里做了一些标记。如果没有跳出线程,我们都应该做些标记。

比如说,在地方下个段之后,我们可以使用 ctrl + F9 在每个返回点做标记。我在这里标注的应该是一些关键点。大家也应该这样去标记。现在,让我们重新启动游戏,然后继续关注包的来源。稍等一下,游戏重新登录了。现在我们重新回到之前的位置。我们来看看我们之前追踪的位置,在这里先下一个段。当断点出现后,我们先检查一下地址 e d x 加上 0c0 是否有变化。如果这个地址一直没有变化,并且我们在这里下断了 e d s,那么在这里也不会发生变化。我们想要进行相关的发包动作,这样一旦断点出现,我们才能返回到正确的位置。

先在游戏中打一段内容,比如说 111999,然后在这个地方下写一个段,马上到游戏中去,让它下一个硬件断点。它马上就会断下,但是我们还没有发出去。现在按下 F9 让它继续运行,然后在游戏中按回车,让它再次断下。现在我们来看一下断点位置,确定了的话,我们先标记一下这个段的位置。

然后我们再看一下加 48 的位置,加 18 再加 8。接着,我们看一下包的内容,在后面我们看到了 3939。我们注意到包的内容中出现了几个 999,可能是因为这个地方应该已经加了 18 个了,里面已经有内容了,也就是说这个地方应该是正确的。现在我们删除断点,按下 ctrl + F9 返回。这是我们的第一次返回,我们可以在这里加一个感叹号。然后再返回到那个地方,加两个感叹号,再返回加三个感叹号,再返回。

我之前已经标记过这个地方了,我们可以将所有的返回点都加上标注,这样我们就将断点分开了。现在游戏崩溃了,但是无所谓,因为游戏如果断点时间太长,它就会崩溃。主要问题在于,如果游戏开发时间太长,各种调试就会变得不方便,尤其是在一些敏感的位置下断点,容易出问题。

那么在这里返回的时候,实际上这个位置是一个铭文包的位置。我们实际上已经返回到了线程外面,一开始我们标注出来的是一个这样的地点,在县城里我们用1122334455标注了它,但是这次返回时什么都没有了。这个位置实际上是一个明文包,后面的几个也可以调用。当我们返回到这个位置时,实际上我调用的是最内层的铭文包。

或许你会问,我们返回的位置是在这里,但你说的最内层的铭文包在这里,这时候大家要考虑一下,实际上我们的包里面做了什么样的动作呢?事实上,在这里它将内容写入到某个位置,而不是代表它前几层返回的明文包。我们返回到这个位置,但是我先将这些内容全部复制出来,然后重新讲述一遍。这个位置是明包,而这个位置实际上是一个加密的包。这个坑里面是我们返回到的位置,这是一个关键的位置,很容易导致崩溃。

我来解释一下具体的道理是怎么样的。我们自己去实验铭文包,直接下个段,然后喊一声话或者在一个铭文包的位置做动作,这样断点就不会那么频繁了。尽量使用喊话,因为这样很容易看到你的喊话内容,从而确定它是否是一个铭文包。关于铭文包的调用关系,它可能有很多层,并不一定只是一层。我们不用在意铭文包的外层有多少层,只需要知道它是外层就可以了。我们刚才说的最内层的铭文包,我调用它内存,可能是这样的一个铭文包,在这里面可能有加密动作。因为在调试游戏的时候很容易导致掉线,所以我不再过多地在这些敏感的位置下断点了。

大家自己去试验,可能找到铭文包的过程会导致几次崩溃,这很正常。不要因为在这个位置容易崩溃而感到烦躁。我曾经花了几个小时崩溃了几次才找到一个铭文包,这很正常。这个铭文包的内存可能在这里有一个加密call,在这个加密call之后,可能返回一个加密的包,然后将这个加密包写入到一个新的地址中。这样的关系是这样的:我们的外层铭文包,然后到里层的铭文包,然后铭文包的后面会将其加密,并将其写入到一个新的地址中。我们所谓的断点位置就是在这个写的过程中断掉的。

在另外的一个位置,它有一个线程循环,在这个循环中它应该处理铭文包的内层,而不是一个发包的动作,而是在写入到这个里面之后,在一个线程循环里去读取,然后写入。这是一个铭文包的内存,不是一个处理的过程。所以大家在这个地方不要理解错了。

那这个位置可以用来做什么呢?可以用来进行hook操作,这样做比较好。然后,它会进行加密,将内容写入到指定的地址中。当然,它写的并不一定是这个包的内容,可能是包的某一层的一个指针。在这里,它就是写入了一个指针,并将这个指针写入到指定的地址中。

在线程循环里,它会去读取这个地址,读取这个指针加上某些偏移量的位置。如果读取到了,需要发送某些内容,它就会调用我们上一节课讲的发包函数。这是一个整体的过程,大家可以好好理解一下,其实并不难。我们一直在线程循环里转,每次都在县城循环里转。然后,我们如何断开呢?这个内容的写入都是在县城里面进行的。最后,我们追踪这个包的内容,往上追到偏移加上18以后,发现这个地方的内容地址是一个固定的,比如说是在线程外面写进来的。我们可以在这个地方下段试试能不能跳出循环,发现在某一个call里面,它是通过其他的位置写进来的,并且还是加密的。

我们返回几层就找到了这个外层的面包。当然,在里程中有一些位置也可以进行hook操作,比较适合hook的位置是一个名包处理的内存位置,它的下面有一个铭文包加密的位置。再往下一层,就是我们写入的这个内容。大家明白整体的过程就很容易处理了。当然,你也可以直接在我刚才返回的那几个位置下断,或者直接调用就可以了,就能找到这个功能号里面去。

标题:【干货】《LOL》外挂开发教程07:明文包
链接:https://www.373wan.com/news/xydt/9451.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
如何在抖音中设置只看三天和限时可见功能

随着抖音的发展,越来越多的用户开始使用抖音来记录自己的生活和分享自己的想法。为了保证用户的隐私和安全,抖

2024-06-14
阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭

阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭[多图],阴阳师4月22日更新的内容有哪些?版本更新

2024-06-14
四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址

四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址[多图],2021四川电视台经济频

2024-06-14
湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口

湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口[多图],湖北电视台生活频道

2024-06-14