什么是悬挂?它是如何制作的?
外挂是指一些人利用自己的计算机技术,专门针对一个或多个网络游戏,改变网络游戏软件的部分程序而制作的作弊程序。现在随着游戏官方对外挂的抵制,游戏本身也有了自动检测外挂的超强功能,但是制作外挂的技术也在不断进步。现在最流行的就是用游戏中打包抢包的工具向游戏服务器提交假数据,从而改变游戏角色的能力。此外,外挂还意味着单元形作战武器系统在其原有作战单元上增加额外的工具和器具,以辅助作战单元。选择目标游戏制作网游外挂的第一步是选择游戏。目标游戏不是随便选的,里面有很多讲究。首先,选择你熟悉的游戏类型。如果你之前做过网游外挂,选择类似的游戏会节省你很多时间。如果你是第一次制作,选择一个你熟悉的游戏类型。第二,尽量不要选择热门游戏,因为热门游戏往往意味着更多的竞争对手,除非你对自己的技术和营销手段很有信心。第三,不要小看玩家人数少的游戏。游戏规模小,竞争小。一款游戏,只要能形成一个人吃饭的场景,再加上好的营销,利润会超出你的想象。不过需要注意的是,最好不要遇到游戏厂商因为游戏规模太小而倒闭的情况。第四,尽量选择还在测试期的游戏,这样可以给你足够的时间做外挂,也可以观察市场上有没有其他外挂。这样游戏正式上线的时候,你的插件差不多就可以上线了。2目标网游初步分析1确定要做的网游外挂类型目标网游选定后,你要做的第一件事就是确定你要做的网游外挂类型。网络游戏外挂虽然统称为外挂,但可以分为以下两类:内部外挂和离线外挂。内挂是在游戏中调出的网游外挂。这个要看网游客户端了。使用的技术主要有鼠标键盘模拟,在内存中搜索特殊变量区,或者链接游戏的包接收功能,模拟游戏的契约发放功能。离线插件是指不依赖于客户端,能够独立模拟客户端与游戏服务器通信的网络游戏插件。离线外挂的实现方法只有一个,就是模拟网游客户端的收包签约过程。总的来说,内挂的整体制作难度比离线挂简单,但离线挂比内挂更有趣,使用起来也更方便,而且不需要启动庞大的客户端程序。因此,下面主要根据离线插件的制作过程来讲解微软网络监视器的使用方法。目标网游的首要分析是分析游戏初始阶段网游客户端与服务器之间的数据通信。这个阶段主要是指从输入用户名和密码到登录游戏到玩家角色出现在游戏场景中的阶段。这是初始阶段最关键的一步。如果你能成功破解网游数据通信部分的加密,并用演示程序成功模拟整个登录过程,你就差不多成功了一半。如果不能破解加密,需要快速重新选择一个游戏。关于前期分析,首先要确定网游客户端和服务器之间的大致通信流程。最起码要知道客户端连接到哪个服务器,连接端口是什么,登录过程中发送和接受了多少个包?要理解这些东西,你需要使用网络包拦截工具。我用微软网络监视器V3.1进行演示,简单易用。您可以从以下网站下载该软件。下面,我简单介绍一下这个软件的使用方法。安装程序后,运行程序,单击起始页上的创建新的捕获选项卡按钮创建新的数据捕获会话,然后单击工具栏上的绿色开始按钮开始捕获网络数据。每个窗口的功能如下:网络会话下面有两项:我的流量代表本机作为发送方或接收方参与的网络数据包。选择此项时,只有与此机器相关的网络数据包会列在帧摘要中。其他流量是网络上其他机器之间的网络数据包。因为在拦截期间刚好经过这台机器,所以被顺便拦截了。捕获过滤器是设置数据拦截时的过滤器。显示过滤器是拦截结果的过滤器设置。选择网络是为了设置在这台机器上需要拦截哪个网络。别名用于设置友好名称。所有合格的网络数据包都会列在帧摘要中。帧细节是当前所选网络数据包的详细结构。十六进制详细信息是当前所选网络数据包的二进制格式。3在分析了C/S网络数据通信的初始阶段后,我们简单介绍了网络包拦截工具的使用。先开始初步分析。在这篇文章中,我以一个网络游戏为假设目标。(具体哪一个,就不深究了。)首先,本地客户端和游戏服务器在别名窗口中分别命名为MyComputer和GameServer。注意不要忘记单击“应用”按钮。数据包列表是目标网游从输入用户名密码到登录游戏直到游戏中出现人物(然后马上退出。)在这个阶段,客户端和服务器之间的所有数据包都是MyComputer è GameServer。S...客户端请求与我的计算机建立连接?游戏服务器。s...a...服务器同意与我的电脑游戏服务器建立连接...a...以上三个包的建立称为建立TCP连接的三阶段握手。当您调用Socket类的Connect方法时,将会生成上述三个TCP包。以下是断线的过程。我的电脑游戏服务器F...A...客户端请求断开我的计算机?游戏服务器....A...服务器同意断开请求我的计算机?游戏服务器F...A...服务器请求断开我的电脑游戏服务器...a...当客户端同意断开请求并调用Socket类的Disconnect方法时,会生成上述四个TCP包。在验证用户名和密码的过程中,客户端和服务器总是要连接两次,所以在后期的插件编程过程中,我们也需要连接两次。的TCP标志...巴拿马...指示TCP数据包包含数据,而...a...是一个响应包,用来回复最后一个包的发送者:我已经收到你的最后一个包了,它没有数据。所以一般来说...巴拿马...数据包有一个相应的...a...包(比如编号266和269),但是如果你在响应的时候发现刚好有数据要发送,可以通过将响应包掺杂到发送包中的方式发送(比如将编号273的响应包掺杂到编号275的包中)。让我们观察客户机和服务器之间的实际数据交换。1.客户端连接到服务器2。我的电脑?游戏服务器向客户端发送7个字节的数据。3.MyComputer游戏服务器客户端向服务器发送90字节的数据。4.我的电脑?GameServer服务器向客户端发送65字节的数据。游戏服务器向客户端发送48字节的数据。6.我的电脑游戏服务器客户端向服务器发送48字节的数据。7.我的电脑?GameServer服务器向客户端发送208字节的数据。8.服务器断开连接。9 ...以上是第一次连接的大致流程。观察每个包中的具体传输数据是没有意义的,因为网游之间的通信必须加密,你每次截获的数据都会不一样。通常游戏服务器发送给客户端的第一个包是密钥包(例如上面的7字节包),客户端收到密钥包后进行相应的数据加密初始化。所以接下来的任务就是根据掌握的数据通信规律,破解游戏客户端的加密算法。4游戏加密算法破解网络游戏所使用的网络通信函数也必须是微软操作系统提供的标准API函数,所以下一个断点通常在接受网络数据的API函数中。当收到第一个7字节的包时,断点被激活,然后逐步跟踪,看游戏客户端是如何处理这些数据的,然后我们在插件中也跟着做同样的事情。整个破解过程相当枯燥,因为都是汇编代码,也是我的专业知识,所以只能大致说说。5 DEMO破解后,需要制作一个可以登录游戏的DEMO来确认游戏加密算法的破解是否成功。至于制作插件的编程语言和工具的选择,没有限制,比如VC,Delphi,VB等。,具体编程不在此赘述。可以根据个人喜好选择。先说网络游戏中数据通信的基本单位:指令包。所谓指令包,就是代表最基本意思的数据包。例如,当游戏角色向左移动时,游戏客户端会向服务器发送一个指令包(角色行走包),通知服务器更新游戏角色的坐标。当游戏角色周围出现新的怪物时,服务器会向客户端发送指令包(怪物外观包),通知客户端在屏幕上绘制怪物。所以可以说,指令包就是客户端和服务器之间使用的通信语言,插件的工作就是解析语言,然后模拟客户端和服务器之间的通信。每个游戏定义的指令包的格式都不一样,但一般一个指令包通常包含以下元素:xx xx xx xx xx xx...xx xx的红色部分通常与说明书包装的长度有关。他可能指的是整个指令包的长度,也可能指的是他剩余指令的长度,这个需要根据游戏的具体情况来确定。之所以需要用一定的篇幅来说明指令包的长度,是由套接字通信的机制决定的。套接字连接建立后,通过套接字连接读取的数据不会被分成指令包。一个TCP包可能正好包含一个指令包,也可能只包含指令包的一部分(如下图所示)。所以这个时候,接收到的网络数据会根据指令包的长度截取成单个指令包。有一点需要指出的是,前几个包可能没有遵循一定的规则,这时候就需要特殊处理(因为是在开头,所以比较好处理),后面的包一定要遵循指令包格式,否则就会混淆。XX XX的蓝色部分通常称为指令包标识,用于说明指令包属于哪种类型。比如怪物攻击包,玩家的移动包等。游戏客户端根据接收到的相应指令包采取不同的动作。事实上,在客户端程序内部有一个很大的Sw。