柠檬友玩

首页 > 游戏资讯 > 正文

外挂原理通俗易懂,最严反外挂系统上线

时间:2022-12-23 15:30:01

我相信插件这种东西,谁都不知道,比如你刚回家很累,打开电脑想玩几个游戏,结果心情爆发,瞄准了各种各样的自己的脑袋。 透视。 报警也没用。 这是别人把自己的幸福作为你的基础,大家一起谈论反外挂的事情

1 .插件起源插件可以追溯到2000年。 当时的星际旅行全貌、CS透视、穿墙等,游戏完全失去了公平的竞技性。 当时的反增效概念也出现了。 而随着PC端网络游戏的兴起,虽然很少有人再去玩,也很少谈论这些游戏,但游戏插件却在随着时代的步伐向前发展。

外挂原理通俗易懂,最严反外挂系统上线

2 .插件如何工作

首先插件的种类众所周知,挂机(挂机)、内存挂机)调用游戏内功能、篡改游戏数据)、模拟挂机(用模拟键盘鼠标代替手动操作)等

技术分类:

1 .离线类插件

在游戏开发过程中,每个游戏的客户端和服务端都有固定的通信形式。 大多数游戏通信协议都位于TCP层之上,是定制的数据结构,插件开发人员将其称为数据包。 为了简要说明离线类插件的原理,我们举一个简单的战斗包。

000ABCD0000dcba0000123400001000

例如,游戏者1在与游戏者2战斗中,发送到服务器这样的16字节的数据包,游戏开发者如下定义该数据包的含义:

0000ABCD :玩家1的ID。

0000DCBA :玩家2的ID。

00001234 :玩家1正在使用的技能编号。

0000(1000 )玩家1对玩家2造成的伤害转换为十进制后为4096。

服务器接收到该信息包后,减少玩家2的血液量4096点,当玩家的血液量减少到0以下时,判断为玩家2战死。 此时,服务器将数据包返回给玩家2的客户端,玩家2的客户端播放玩家2死亡的动画。

以上逻辑,其实有很多漏洞。 例如,服务器应该确定玩家上次释放00001234号的技能是否在冷却时间内,且例如,服务器可以确定玩家战斗中的伤害与其装备、法力值、攻击力、暴击等相匹配,以及游戏自身限制的最大值所有游戏中都存在这样的漏洞,但并不明显。 一些老游戏在这方面相对薄弱,所以漏洞很多。

此外,在游戏开发过程中,数据通信的格式在游戏开发商的公司中有明确的定义。 这些文件非常机密。 如果安全性不够,一些游戏开发商可能会泄露游戏代码和文档。 一旦这些资料落入插件开发者手中,该游戏很可能会出现离线插件。

离线插件定义:第三方程序直接与游戏服务器通信,在操作时模拟合法数据包,包括帐户登录验证、角色选择、参与游戏、参与场景、战斗开始和对怪物的危害服务器没有能力判断这些数据包是否是客户端传来的,即使有验证手段,源代码也会被泄露,因此插件开发人员可以方便地模拟服务端的各种验证机制。 即使在数据包传输过程中被加密,由于源代码被泄露到了外部,插件开发者可以正确地模拟数据包的加密方式。

2 .模拟建设类插件

大多数离线类插件依赖于游戏开发者的数据泄露,而伪订购类插件与离线类插件非常相似。 其理由是,一些插件开发者本身就是游戏开发者出身,对游戏中的逻辑非常了解。 他们通过调试分析软件包的方法,在没有源代码和通信格式资料的情况下,也可以分析游戏中的关键数据包,并采用一定的模拟下单技术,完成游戏中所包含的功能。

很多这样的插件需要在游戏中注入dll文件,取得用dll与服务器通信的套接字句柄,在该套接字句柄上,将自己整理的正当数据包发送到服务器。 部分旧游戏中常见的此类插件,如决战OL中的挂机喊话功能、自动吃药功能都是模拟建设方式完成的。

3、内存式插件

即使没有游戏客户端源代码,没有游戏开发经验,也可以进行插件开发。 这些插件开发人员通常熟悉操作系统的各种基本机制,包括模块、线程、内存、内核对象和内核机制。 这些技术可以帮助他们分析游戏客户端进程的逻辑和重要数据。 然后,他们通常将dll注入游戏过程,操纵游戏过程中的数据,完成一些特殊的功能。 如果有一些变更,而服务正好没有经过验证,他们的插件功能就会正常运行。

三.游戏外挂基本原理

对于独立游戏,游戏的大多数参数(血、蓝、能量、金币等)都存储在计算机堆栈中,与场景进度相似的参数经过加密后写入本地自定义配置文件。 独立插件的原理是修改本地配置文件

对于页游、网游和手游:游戏插件通常会修改内存数据或拦截网络数据包。

1、内存数据修改原理:服务器存储大量重要参数,而客户端不可避免地需要进行大量计算和资源加载,因此本地内存类型必然存在部分临时变量,判断这些变量的变化规律和函数的疏密有利于自身进一步提高权限,利用Windows API将自定义数值写入该内存块,修正某个数值的操作就完成了。 一般来说,解读一个数值,利用规律解读其他数值会变得更容易。

2、监听网络数据包的基本原理:互联网的客户端/服务器模式的通信一般采用TCP/IP通信协议,数据交换通过IP数据包的传输来实现,一般客户端对服务器提出某种要求。 例如,移动、战斗等指令都是以数据包的形式与服务器交换数据。 那么,从本地发送消息称为SEND。 意味着发送数据。 服务器收到我们的SEND消息后,会按照规定的步骤将相关信息反馈给客户端。 例如,移动的坐标、战斗的类型。 客户端接收来自服务器的消息称为RECV。 下一个任务是分析在客户端和服务器之间传输的数据或数据包。 这样就可以提取和修改对我们有用的数据,然后通过模拟服务器发送到客户端,或者模拟客户端发送到服务器来修改游戏。

数据包1.1什么是数据包的概念本论文中的数据包是指根据sockets协议收发的数据包。 广义的数据包是指计算机之间相互进行通信的数据包,根据通信协议的不同内容可能会不同。 1.2解密原理目前解密分组加密和解密算法的方法主要通过动态调试技术来实现。 其原理是首先通过动态调试跟踪并取出加密算法和解密算法的代码段,然后通过分析这些代码最终得出结论。

除了挂起外,挂起主要是验证游戏数据。 例如,伤害、移动速度、血液量等。 例如,以前流行的变速齿轮( CE类存储器修正)。 几年前的游戏没有经过验证的时候,大部分都是想跑多快,但现在已经和谐了。 调和的方法也非常简单,计算人的速度,获取人的坐标到另一个坐标的距离存在一定偏差,伤害、血液值都很相似,任何数据都有计算是否超过预期最大值的算法。

游戏应用1、压枪:压枪技术可以通过多种方式实现,但要想实现高精度压枪,需要修改内存或网络数据包,先获取枪口偏移信息,再通过鼠标移动虚拟指令将准星调整到特定点。

2、透视:读取内存内的数据坐标,在画面上描绘应该隐藏给玩家的信息。 OBS推送时,如果选择仅推送的游戏,则这样的“消息”只有直播者才能看到。

3、自动地址:以上两者组合获得,获得玩家坐标,通过鼠标移动指令完成地址。

总结:如果能完全忽略枪口跳动时的随机左右偏差量,基本上可以认为是读取内存的压枪。 虽然很少发现透视,但不管多么相似,最终目的一定是从这个功能中获益。 自动地址最容易发现。

内存/数据包类修正:同时秒杀多人、瞬间移动、单人、圈外不受危害等

总结:通过修改内存和数据包,实现各种丧心病狂的功能和容易被屏蔽的功能,更容易理解。

插件与插件的对决1、严格加密服务器上的数据库,每天自动更新随机密码,数据包经过很好的验证,有效性结果以服务器上为准;

2、对游戏客户端进行严格检查。 具体手段如下。

)1)保护重要的api Hook,与网络相关的send recv;

)2) dll注入检查可能是hook loadlibrary,但有时也会定时检测流程模块(发现错误模块后结束)。

)3)用od调试的客户端还没有完全有效的方法。 一般来说,添加花的命令,或者添加壳。 对于大量水平较低的插件作者,这些方法就足够了。

)4)许多游戏都会检测PE、OD、按键向导、简约游等。 主要列举窗口名、进程名,如果有这些名称就屏蔽,但这种低级方法效果不大。

)5)按钮类插件检测对于后台脚本主要使用GetCursor、GetForegroundWindow,检测窗口位置和鼠标位置是否正确。 另外,还有处理WM_ACTIVE消息的时候(神武就是这样做的)。 关于前台脚本,除了移动鼠标以外没有其他方法,但这个移动对普通人来说是不可能的。

)也有人检测鼠标点击位置的重复度,这大多是自己的预想,容易导致误封。

外挂技术与游戏安全分析抵御逆向分析

除键盘模拟插件、通用加速插件等部分通用性插件外,大多数插件都是动态调试和静态分析游戏逻辑和数据,找到关键逻辑和数据位置后再修改游戏因此,调试和保护游戏逻辑是游戏插件产生的强大方法。

阻止插件入侵

游戏的重要逻辑和数据被黑客分析后,黑客通过程序对游戏客户端进行更改。 更改游戏进程经常通过ReadProcessMemory、WriteProcessMemroy或向游戏进程注入dll来更改游戏内存,从而保护游戏内存和恶意模块扫描

游戏外挂先走一步

Virbox反插件系统针对游戏安全问题,采用静态保护和动态保护相结合的方式,防范、打击插件,为端游护航,目前仅支持Windows系统。

静态保护( Virbox Protector )

Virbox Protector是一个自主开发的虚拟机外壳,为游戏的代码逻辑、强大的虚拟机保护和Unity游戏设计的独特的Unity3D保护,给游戏的反向分析带来了巨大的障碍,plane

代码逻辑保护

现代反编译工具越来越强大,即使是用C/C等静态语言编译的程序,也可以将代码还原为与源代码相差无几的代码。 没有代码保护,游戏客户端的代码逻辑被暴露,容易被黑客发现攻击的地方,插件的制作成本低。

Virbox Protector可以通过模糊、虚拟机、代码加密等方法保护游戏中指定的函数。 受保护的代码无法自动恢复。 黑客分析模糊化和虚拟化命令需要比以前多几十百倍的时间。 保护游戏客户端的重要函数,每次客户端更新时,黑客都需要大量时间重新分析受保护的代码。

内存检查

大多数插件的高级功能都是通过“内存补丁”方式对游戏模块进行修改的。 Virbox Protector具有内存检查功能,可以检查游戏代码以避免被打上补丁。 (此功能目前不支持Unity3D游戏。)

Unity3D保护

Unity游戏用C#编写,比用C/C开发的游戏更容易被黑客分析。 使用DnSpy、Reflector等工具可以直接反编译Assembly-CSharp.dll的代码,明确知道游戏代码中的变量和函数名称。

Virbox Protector加密了Assembly-CSharp.dll中的所有方法,只有在执行该方法并将其编译为汇编代码后才能解密,黑客才能从Dump中提取原始代码

动态保护( Virbox防插件引擎) ) ) ) ) )。

Virbox反插件引擎是一个驱动级进程保护系统。 该系统将主动防御(反调试、内存保护、反注入、Hook检测等)与被动防御(窗口检测、内存特征扫描等)相结合,动态保护游戏过程。 Virbox反插件引擎的主要功能包括:

反向调试

要创建插件或盗版修补程序,必须首先使用调试器( OllyDbg、x64dbg、Windbg、Cheating Engine等)调试软件进程并分析重要的代码逻辑和数据Virbox反插件引擎对受保护的进程进行调试检查,防止WinDbg等内核调试器调试Virbox反插件引擎本身,禁用各种调试器,给反向分析过程带来了巨大的障碍

内存保护

黑客在分析软件时,除了调试外,还会通过内存搜索等方式寻找重要数据的内存。 另一方面,大多数插件和盗版补丁都使用不同的过程修改内存。 Virbox防插件引擎通过驱动器级内存保护,防止其他进程读写或修改受保护的进程,从而确保受保护进程的安全。

反向注入

除了进程间的内存访问外,还可以通过注入Dll或ShellCode来修改进程内存。 Virbox防插件引擎通过内存保护和监控模块加载方式阻止大部分注入方式,并结合内存特性检测功能阻止恶意模块。

特征扫描

非插件引擎可以检测存储器特性、窗口特性、模块特性、驱动特性(例如,HideToolz、PCHunter、StrongOD等)

安全问题一定要重视。 插件措施本身是一个伴随着游戏整个生命周期的问题,你面临的问题也是其他游戏开发者面临的问题。 如果进一步解决插件对策的问题,就可以领导其他开发者。