盘点那些反外挂的事1.外挂起源(组图)

插件相信大家都很熟悉了。例如,你刚到家,你很累。你想打开电脑玩几个游戏。看法。举报也没用。这是因为其他人在你的基础上建立了他们的幸福。再说说那些反外挂的东西。

1.插件的由来

外挂的事情要追溯到2000年。过去,星际争霸的全画面、CS的视角、穿墙的穿法,让游戏彻底失去了公平性。当时,防堵的概念也应运而生。然后,随着PC端网络游戏的兴起,很少有人玩或谈论这些游戏,但游戏外挂却随着时代的步伐不断前进。

2.插件如何工作

先说一下插件的种类,大家都知道,离线挂(包挂),内存挂(调用游戏内函数,篡改游戏数据),模拟挂(模拟键盘鼠标代替手动操作)和很快

技术分类:

1.离线插件

在游戏开发过程中,每个游戏的客户端和服务器都会有固定的通信格式。大部分游戏通信协议都位于 TCP 层,数据结构是自定义的。插件开发者称这个包。下面通过一个简单的战斗包的简单例子来轻松解释离线插件的原理。

0000ABCD 0000DCBA 00001234 00001000

例如,玩家 1 在与玩家 2 的战斗中向服务器发送一个 16 字节的数据包,游戏开发者定义该数据包含以下含义:

0000ABCD:玩家 1 的 ID。

0000DCBA:玩家 2 的 ID。

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

00001000:玩家1对玩家2造成的伤害,换算成十进制:4096。

当服务器收到这个数据包时,它会减少玩家2的HP 4096点。如果减少后玩家的HP小于等于0,则判定玩家2已经死亡。此时服务器会向玩家2的客户端返回一个数据包,玩家2的客户端会播放玩家2死亡的动画。

上面的逻辑其实有很多漏洞。例如,服务器要判断玩家最后一次发布的00001234号技能是否在冷却时间内。再比如,服务器要判断玩家在战斗中造成的伤害是否与装备和法力有关。,攻击力,暴击等有密码的模块会被反编译吗,是否超过游戏本身限制的最大伤害。像这种漏洞,每个游戏都会存在,但不会那么明显。一些老游戏在这方面比较薄弱,所以漏洞比较多。

此外,在游戏开发过程中,数据通信的格式在游戏开发者公司的相关文件中有明确规定。而且这些文件是非常机密的。如果一些游戏开发公司的安全性不够好,游戏代码和文件可能会被泄露。一旦这些数据流到外挂开发者手中,离线外挂很有可能会出现在这款游戏中。

离线插件定义:在未打开游戏客户端的情况下,第三方程序直接与游戏服务器通信,模拟账号登录验证,选择人物,进入游戏,进入场景,开始战斗,导致怪物损坏等数据包发送到服务器,服务器没有能力判断这些数据包是否是客户端发送的。即使有验证方法,由于源代码已经泄露有密码的模块会被反编译吗,插件开发者可以很方便的在服务端模拟各种验证机制。即使数据包在传输过程中被加密,由于源代码泄露,插件开发者也能正确模拟数据包的加密方式。

2.模拟外包插件

离线插件多依赖于游戏开发者的数据泄露,而模拟合约插件与离线插件非常相似。原因是有些外挂开发者自己可能就是游戏开发者,对游戏中的逻辑有很好的理解。他们可以在没有源代码和通信格式数据的情况下,使用调试+抓包分析的方法来分析游戏中的一些关键。它采用一定的模拟发包技术来完成游戏本身包含的功能。

这类插件大多需要将dll文件注入到游戏中,并使用dll获取socket句柄与服务器通信。在这个套接字句柄上,它向服务器发送自己有组织的合法数据包。这种外挂在一些老游戏中很常见,比如决战OL挂机的喊话功能,自动喝药功能,都是通过模拟送包的方式来完成的。

3、内存插件

如果没有游戏客户端源码,也没有一定的游戏开发经验,插件开发还是可以的。这些插件开发者一般都精通操作系统的各种底层机制,如模块、线程、内存、内核对象、内核机制等。这些技术帮助他们分析游戏客户端进程中的逻辑和重要数据,然后他们通常会在游戏进程中注入dll来操作游戏进程中的数据并完成一些特殊的功能。当遇到一些变化,恰好服务器没有勾选时,它们的插件功能就成功执行了。

三、 游戏外挂基本原理

对于单人游戏:游戏中的大部分参数(如血、蓝、能量或金币)都存储在电脑的堆栈中,一些类似于剧情进度的被加密并写入本地自定义配置文件 ; 所以单机插件的原理就是修改本地配置文件

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

1、修改内存数据的原理:服务端保存了大量的重要参数,但是由于客户端不可避免地需要进行大量的计算和资源加载,所以本地内存中必然存在一些临时变量。这些变量的变化规律和函数的破坏可以找到对它们有利的参数,比如损坏值,然后找到变量的内存地址,根据指针偏移分析得到内存基地址,然后使用Windows API 升级权限自定义 当值写入内存块时,修改某个值的操作就完成了。一般来说,只要破解了一个值,就更容易用规律来破解其他值。

2、截取网络包的基本原理:Internet客户端/服务器模式下的通信一般采用TCP/IP通信协议,通过IP数据包的传输实现数据交换。一般来说,客户端发送的一些请求,如移动、战斗等指令都是以数据包的形式与服务器交换数据。然后我们调用本地发送的消息SEND,即发送数据。服务端收到我们的SEND消息后,会按照既定的流程将相关信息反馈给客户端,比如移动的坐标、战斗的类型等。客户端从服务器接收到的相关消息称为RECV。接下来要做的工作是分析客户端和服务器之间的数据(即数据包),这样我们就可以提取和修改对我们有用的数据,然后模拟服务器发送给客户端,或者模拟客户端发送给客户端。服务器,这样就可以达到修改游戏的目的。

什么是包

1.1 数据包的概念 本文所说的数据包是指通过sockets协议发送和接收的数据包。从广义上讲,数据包是指计算机之间相互通信的数据包,由于通信协议的不同,其内容可能会有所不同。1.2破解原理 目前破解数据包加解密算法的方法主要是通过动态调试技术来实现的。其原理是先通过动态调试对加解密算法的代码段进行跟踪提取,最后通过分析这些代码得出结论。

记忆挂起更不用说记忆挂起。内存挂的主要目的是验证游戏数据,比如伤害、移​​动速度、血量等,比如我们说之前流行的变速齿轮(CE型修改内存)在早期的游戏中使用年。没有验证的时候,我几乎想跑多快就跑多快。现在和谐了。和谐的方法很简单。计算人物的速度,然后取人物的一个坐标到另一个坐标的距离。有一定偏差。如果差距超过设定的限制,则可以确定玩家正在使用加速工具。伤害,HP,都是类似的,任何数据都有一个算法来计算它是否超过了预期的最大值。

游戏应用

1、 枪压:枪压技术有很多方法,但是对于高精度的枪压,需要修改内存或者网络数据包。首先获取枪口偏移信息,然后通过鼠标移动的虚拟命令调整准星。到一个特定的点。

2、透视:读取内存中的数据坐标并在屏幕上绘制应该对玩家隐藏的信息。在OBS上直播时,如果你选择只直播游戏,这种“信息”只会对主播可见。

3、自动瞄准头:结合以上两种获得,获取玩家坐标,然后通过鼠标移动命令完成瞄准头。

总结:如果你能完美地忽略枪口跳动时的左右随机偏移,你基本上可以把它当做读记忆的压力枪。透视的发现要困难得多,但无论它看起来如何,最终的目标都是从这个功能中受益。自动瞄准器是最容易发现的。

修改内存/包类:同时击杀多人、瞬移、一拳超人、圈外无伤害等。

图片[1]-盘点那些反外挂的事1.外挂起源(组图)-老王博客

总结:通过修改内存和数据包实现各种疯狂的功能,很容易被封禁,很容易被人看到。

反作弊与作弊的对决

1、服务器上的数据库经过严格加密,随机密码每天自动更新。对数据包进行频繁校验,校验结果以服务器为准;

2、严格测试游戏客户端,具体手段有:

(1)保护关键api hooks,网络相关发送recv;

(2)dll注入检测可能是hook loadlibrary,对于进程模块的定时检测也很有用(发现非法模块时退出);

(3)od没有完全有效的调试客户端的方法,一般是加一些花哨的指令,打包shell。这些方法对于大量低级插件作者来说已经足够了;

(4)很多游戏都会检测PE、OD、按键精灵、简单游戏等,主要是枚举窗口名、进程名,有这些名字的会被屏蔽,但是这种低级的方法效果不大.

(5)按键式插件检测,对于后台脚本,GetCursor和GetForegroundWindow主要用于检测窗口位置和鼠标位置是否正确,还有一些是处理WM_ACTIVE消息(神武就是这样做的) .对于前台脚本,除了放鼠标偏移之外没有更好的办法,但是这种偏移对于普通玩家来说也是非常不友好的,也影响了游戏公司对玩家的留存。

(6)有些人说检测鼠标点击位置的重复性,这多是自己的猜想,这样做很容易导致误封。

外挂技术与游戏安全分析

抵制逆向分析

除了少数通用插件(如键盘模拟插件、通用加速插件)外,大部分插件在制作前都需要对游戏逻辑和数据进行动态调试和静态分析,找到关键逻辑的位置和修改游戏前的数据。因此,反调试和保护游戏逻辑是抵抗游戏外挂生成的有力手段。

防止插件入侵

一旦黑客分析出游戏的关键逻辑和数据,黑客就会通过编程修改游戏客户端。修改游戏进程往往是通过ReadProcessMemory、WriteProcessMemroy等一些系统函数,或者将dll注入游戏进程来修改游戏内存。因此,保护​​游戏内存和扫描恶意模块是进一步防范外挂和被动检查外挂的有效措施。

游戏反外挂第一步

Virbox反外挂系统针对的是游戏安全问题。它采用静态保护和动态保护相结合的方式来抵抗和打击外挂,为端游保驾护航。目前,仅支持 Windows 系统。

静电保护(Virbox Protector)

Virbox Protector 是深思自主研发的虚拟机外壳。用于保护游戏的代码逻辑。强大的虚拟机保护和专为Unity游戏设计的独特Unity3D保护对游戏的逆向分析造成极大障碍,有效遏制外挂。生产。

➤ 代码逻辑保护

现代的反编译工具越来越强大,甚至用C/C++等静态语言编译出来的程序,也可以将代码还原到和源代码一样的水平。没有代码保护,游戏客户端的代码逻辑暴露,黑客很容易找到攻击的位置,使得插件的编写成本非常低。

Virbox Protector 可以通过混淆、虚拟机、代码加密等方式保护游戏中指定的功能,被保护的代码无法自动恢复,黑客分析混淆和虚拟化指令需要数十倍甚至数百倍的时间。为了保护游戏客户端的关键功能,每次客户端更新时,黑客都需要大量时间重新分析受保护的代码。

➤ 内存检查

插件的大部分高级功能都使用“内存补丁”的方式来修改游戏模块。Virbox Protector 有内存检查功能,可以检查游戏代码,防止被打补丁。(此功能目前不支持 Unity3D 游戏)

Unity3D 保护

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

Virbox Protector 对 Assembly-CSharp.dll 中的方法进行加密,只有在方法编译成汇编代码时才解密。黑客无法转储原始代码。

动态保护(Virbox防堵引擎)

Virbox 反插件引擎是一个驱动级的进程保护系统。系统结合主动防御(反调试、内存保护、反注入、钩子检测等)和被动防御(窗口检测、内存签名扫描等)对游戏进程进行动态保护。Virbox反插件引擎的主要功能如下:

➤ 反调试

编写插件或盗版补丁,首先要做的是使用调试器(如OllyDbg、x64dbg、Windbg、Cheat Engine等)调试软件进程,分析关键代码逻辑和数据。Virbox反插件引擎对被保护进程进行调试和检测,并阻止内核调试器(如WinDbg)对Virbox反插件引擎本身进行调试,使各种调试器失效,极大地阻碍了逆向分析过程。

➤ 内存保护

黑客在分析软件时,除了调试之外,还会通过内存搜索(如使用作弊引擎)定位关键数据的内存。另一方面,大多数插件或盗版补丁都会通过另一个进程修改内存。Virbox 反插件引擎采用驱动级内存保护,防止其他进程读取、写入、修改受保护进程,保证受保护进程的安全。

➤ 防注射

修改进程内存,除了跨进程内存访问外,还可以通过注入Dll或ShellCode来完成。Virbox反插件引擎通过内存保护和监控模块加载来拦截大部分注入方式,并配合内存特征检测。阻止非法模块的功能。

➤ 特征扫描

反插件引擎可以检测内存特征、窗口特征、模块特征、驱动特征(如HideToolz、PCHunter、StrongOD等)

安全问题必须引起重视。反破解本身就是伴随游戏整个生命周期的问题。你遇到的问题,也是其他游戏开发者遇到的问题。如果你迈出了第一步,解决了防裂问题,你就可以领先别人。开发人员迈出了一大步。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论