游戏反外挂技术原理讲解

article/2025/9/23 23:42:47

永远在路上

没有破解不了的反外挂系统,反外挂是一个对抗过程,需要不断升级。我们反外挂小组会采取对抗方式提升防御,也会研究竞品来获取灵感。反外挂也是非常有意思的,可以学到很多很多底层知识。

善战者无赫赫之功

反外挂,很难做出成绩,你把游戏保护的固若金汤,你会显得很平庸,可有可无。但是如果一旦有一款外挂不能及时防御,你又会显得很无能,所以我选择离开这个行业,主要是所在城市没有太多选择。

本文的结构如下:

1 反调试

反调试是反外挂中很重要的环节,可以提高外挂作者的门槛。每一种反外挂手段我们成为“暗桩”,其实没有不能破解的反外挂手段,但是如果“暗桩”太多,对于外挂作者也是很难调试游戏的。

下面开始介绍一些反外挂手段。 这里有一个很好的网站,里面包含8大类反调试技术,感兴趣可以看一下。

https://anti-debug.checkpoint.com/

1.1 调试检测

1.1.1 执行时间

当游戏被调试时,运行肯定会变慢,我们可以检测游戏主循环的运行时间,来判断是否被调试,实际上这种检测是最难拔出的“暗桩”。

1.1.2 调试位检测

windows提供了一些api来检测,例如IsDebuggerPresentCheckRemoteDebuggerPresent

// IsDebuggerPresentstatic bool xx_is_debug_1() {

return IsDebuggerPresent();}// CheckRemoteDebuggerPresentstatic bool xx_is_debug_2() {

BOOL debuged = false;

bool ret = CheckRemoteDebuggerPresent(GetCurrentProcess(), &debuged);

return ret && TRUE == debuged;}

1.2 硬件断点检测

硬件断点既是调试手段、也是一种hook手段,反外挂时一定要检测的。检测时有两种手段:

  1. GetThreadContext:获取寄存器信息,判断Dr0~Dr3如果不是0,则被下了硬件断点。

  1. 硬件断点占坑:硬件断点只有4个,反外挂系统把硬件断点占住,我只要检测我的断点存在即可。

我使用了硬件断点占坑方式检测,因为调用GetThreadContext检测时容易被hook。

后期我们做对抗时,发现可以用设置内存属性,来绕过硬件断点占坑,以后会写一篇文章来介绍。

2 外挂检测-特征

游戏反外挂系统会“主动出击”,检测一些“知名”的通用外挂工具,例如cheat engine、OD调试器、变速齿轮等。检测的方式可以是进程名、窗口名、模块名(dll)等信息。反外挂系统还会从服务端动态拉取一些特征库,实现不停服升级反外挂系统。

当然特征检测主要还是为了提高外挂制作门槛,不能起到太大作用,有胜于无吧。

3 自我保护

游戏反外挂系统做的再牛,把游戏保护的再好,但是如果反外挂系统被本身干掉了也就白玩了,所以自我保护是重中之重。

3.1 反外挂线程保护

反外挂系统会启动一个反外挂线程来检测,不在主线程运行,以免拖慢游戏程序,首先我们就要保护反外挂线程不被干掉。

我们采取使用游戏主线程与反外挂线程守望相助,由主线程专门来检测反外挂线程的存货,反外挂线程可以采取更新变量、信号等方式通知主线程自己存活。如果主线程检测到反外挂线程不正常工作,就退出游戏程序。

3.2 安全退出

当发现外挂或发现被调试时,游戏程序会弹框提示玩家,然后再退出游戏。如果不做保护,外挂作者可以从弹框入手、顺藤摸瓜来分析反外挂的工作原理,然后指定破解方法。

这里主要防御手段是:延迟退出;堆栈清理。

3.2.1 延迟退出

当发现异常后,反外挂系统不会立即退出,做个标记然后等一会退出,这样被分析时也不会是第一线程,无法定位工作原理。

3.2.2 堆栈清理

弹框时,我们要做堆栈清理,把堆栈弄乱,让外挂作者无法分析调用关系。

DWORD dwEBP = 0,dwEBPMain = m_MainEBP.GetT();

__asm {

mov dwEBP,ebp }

while (dwEBP < dwEBPMain)

{

*((DWORD*)dwEBP) = 0;

dwEBP += 4;

}

4 游戏保护

游戏保护是反外挂的根本,是反外挂系统的内功,以不变应万变。

4.1 代码保护

代码保护时要考虑执行效率,进行不同的保护手段。

  • 反外挂代码:加壳保护,加壳可以混淆代码,增加调试难度。我选择使用宇宙最强壳,vmprotect。

  • 游戏代码:游戏代码要考虑效率,无法加壳。这里就使用前面介绍的代码完整性校验,把PE文件重定位、修复导入表以后进行校验。

4.2 数据保护

一些游戏内存数据也需要进行保护,一些敏感字符串,一些重要游戏属性。

  • 字符串保护:例如“发现外挂”,如果明文保存,很容易被od搜索出来,然后定位使用的位置。我们采取简单加密,只要搜索不出来即可。

  • 游戏内存保护:我采取动态多级指针,每次启动随机指针的级数,这个不知道作用有多大,毕竟没和外挂作者讨论过。很多保护措施都是我们反外挂小组攻防实验时,加固的。

5 信息收集

信息收集是反外挂系统的重要组成部分,可以帮助我们收集玩家使用外挂证据、收集外挂等。

  • 玩家监控:我们会重点监控“重点玩家”的信息,重点玩家来自于玩家举报,我们会加入监控观察一周。

  • 游戏程序修改:反外挂系统会全量检测游戏.exe和d3d9.dll的代码段,发现修改就把版本和修改的地址上报,会定时分析其中可疑的味道。

  • 文件上传:这个功能有点流氓,我们控制台可以指定上传玩家本地的文件,是我们收集外挂的重要手段。

最后,求关注、点赞、转发,谢谢~


http://chatgpt.dhexx.cn/article/wtAxhacI.shtml

相关文章

游戏外挂:用Python做个小游戏的开挂

小游戏开挂之路 一、工具的准备1.截屏和图像处理工具2.编辑器3.游戏原理分析二、开挂步骤1.移动鼠标2.点击鼠标3.相似图像查找原理4.实现开挂,自动做菜玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过外挂怎么制作出来的呢?现在来看一下怎么制作一个外…

网游外挂之制作流程

很多人都对网游外挂的制作很感兴趣&#xff0c;在这篇文章里&#xff0c;我向大家简单介绍一下一款网游外挂的大致制作流程。 首先&#xff0c;我想说明几点&#xff1a; 第一&#xff0c;这篇文章并不是具体教你如何写外挂&#xff0c;只是带你大致浏览一下网游外挂的制作流程…

干货!什么是游戏外挂,外挂的种类及实现原理

外挂&#xff0c;原指一切用来破坏游戏程序正常游戏数据和逻辑的工具或破解版。比如可以修改游戏内存数据的修改器&#xff0c;又比如可以修改网络数据包的抓包工具。这类外挂或多或少会影响游戏的内存数据、文件数据、网络数据&#xff0c;甚至代码逻辑。 但随着外挂市场的发…

各网游的外挂是如何做出来的?

每一个致力于学习黑客技术的人&#xff0c;最后都分为三种人。 第一种&#xff1a;入侵&#xff0c;各种入侵&#xff0c;玩的就是入侵的快感&#xff0c;或者恶作剧的喜感&#xff0c;或者那种有特殊“窥视”癖好的人……别误会&#xff0c;小编我是喜欢“恶作剧&#xff0c;…

shift后门入侵步骤

shift后门入侵 步骤 找到 C:\WINDOWS\system32\sethc.exe 文件并将其删除 在工具文件夹选项——查看中红圈中的更改了 将 C:\WINDOWS\system32\dllcache\sethc.exe删除&#xff0c;这个文件夹中放着缓存&#xff0c;如果不删除就会自动变回去找到 C:\WINDOWS\system32\cmd.exe…

windows操作系统常见持久性后门

作者&#xff1a; h0we777 免责声明&#xff1a;本文仅供学习研究&#xff0c;严禁从事非法活动&#xff0c;任何后果由使用者本人负责。 0x00 简介 ​ 当我们拿到域中最高权限之后&#xff0c;就需要将自己的权限进行巩固&#xff0c;进行权限持久化操作。 0x01 隐藏账户 1…

权限持久化---映像劫持检测(Shift后门)

映像劫持说白了还是利用了windows的一些特性&#xff0c;当你点击可执行文件进行执行时&#xff0c;系统并不会直接就对可执行文件进行执行&#xff0c;而是首先对注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options&…

渗透测试模拟实战——暴力破解、留后门隐藏账户与shift粘贴键后门、植入WaKuang程序(靶机系统:Windows2008)

本次实验主要是为了应急响应打基础&#xff0c;从攻击者的角度出发&#xff0c;知己知彼&#xff0c;百战不殆 一、环境搭建 靶机&#xff1a; Windwos Server 2008 系统 靶机IP地址&#xff1a; 192.168.226.137 攻击IP地址&#xff1a; 192.168.226.1 二、模拟攻击 2.1 …

搞死虚拟机-永恒之蓝和shift后门

扫描端口&#xff1a;发现开启了445端口可能存在永恒之蓝&#xff08;ms17_010&#xff09;漏洞 nmap -sV -p- -A -v 192.168.206.129 开启msf msfconsole 搜素 search ms17_010 使用msf验证脚本&#xff0c;验证是否存在ms17_010 use auxiliary/scanner/smb/smb_ms17_010…

shift后门的一个分析

有关shift后门的激活方式,目前发现的就这么几种1.使用键盘事件通过快捷键激活2.使用鼠标事件通过单击或双击界面某处激活3.使用键盘事件及鼠标事件相结合的方式激活  以上所说的是高防后门的激活方式,rar自解压的不在此范围之内,后门的编程语言目前发现以vb,delphi和c等语言为…

创建隐藏用户和shift后门制作

目录 创建隐藏用户 shift后门制作 创建隐藏用户 1、创建隐藏用户kiku$,并加入到管理员组 2、利用cmd命令行&#xff08;命令net user&#xff09;和计算机管理 查看结果 3、打开注册表 4、导出administrator和隐藏用户kiku$的文件 5、将隐藏用户删除&#xff08;一定要使用…

后渗透篇:Windows 2008 server提权之突破系统权限安装shift后门

当你的才华 还撑不起你的野心时 那你就应该静下心来学习 目录 Windows 2008 server提权之突破系统权限安装shift后门 0x01 前言 0x02 主要操作部分 0x03 主要命令组成部分 Windows 2008 server提权之突破系统权限安装shift后门 0x01 前言 大家都知道08权限的系统权限设置…

各式各样的shift后门

经常会看到一些服务器被入侵后&#xff0c;入侵者会留下一些各式各样的shift后门&#xff0c;五花八门的&#xff0c;各位网络管理员也看看自己的服务器的setch.exe是否被人替换了。 这个直接5次shift后进入分区 这个比较巧妙了&#xff0c;正常的最后那个按钮是灰色的&#xf…

网络安全实验十二 window 2003 Shift后门实验

一、实验目的 1、了解windows系统中的漏洞 2、了解windows系统漏洞的危害 3、了解windows系统如何预防漏洞带来的危害 4、了解利用windows 2003系统粘滞键漏洞建立后门程序并利用该后门 二、实验环境 实验主机&#xff1a;Windows Server 2003 实验目标服务器&#xff1a…

创建shift后门

一、实验目的及要求 1. 学会创建Shift后门 2.掌握shift后门的原理 二、实验设备&#xff08;环境&#xff09;及要求 PC机, VC等,虚拟云平台 三、实验内容与步骤 1.在192.168.1.3的虚拟机上打开cmd命令指示符&#xff1b; 2.输入“ cd c:\WINDOWS\system32”,进入该文件夹…

Windows留置后门——隐藏用户+Shift后门

文章目录 前言一、创建隐藏用户1. 创建用户2. 隐藏账号 二、Shift后门1. 后门制作2. 防御 总结 前言 后门是攻击者出入系统的通道&#xff0c;惟其如此它隐蔽而危险&#xff0c;攻击者利用后门技术如入无人之境 一、创建隐藏用户 1. 创建用户 1.1、攻击者控制某台机器&#…

3389之永不查杀的后门shift后门代码

永不查杀的3389后门其原理就是利用shift后门&#xff0c;连敲5次shift键既可以直接进入服务器。 前些天在群里有个小伙伴问了一句谁知道shift后门的代码&#xff0c;当时我给了他一个链接&#xff0c;我总是觉得这个百度下就能找到吧&#xff0c;我查了一下&#xff0c;发现什么…

windows权限维持之shift后门

原理&#xff1a;沾滞键的目的是为了帮助那些按键有困难的人设计的&#xff0c;在Windows系统下连续按5次shift键后&#xff0c;系统就会执行C:\Windows\System32下的sethc.exe&#xff0c;也就是启用了沾滞键&#xff0c;但是当我们将shell.exe文件把sethc.exe文件通过更改名称…

RDP shift后门漏洞

RDP shift后门漏洞 在win7开机过程中&#xff0c;强制关闭计算机&#xff0c;再次开机会出现修复&#xff0c;点启动修复 当它无法修复时会弹出下面的框发送和不发送&#xff0c;这里有查看问题详细信息的按钮 点击该按钮可以看到有一些信息 在信息最下面有个隐私声明的…

mstsc之shift后门

我们在3389的时候&#xff0c;winserver03之后&#xff0c;验证端都放在了本地&#xff0c;mstsc无法进入锁屏界面&#xff0c;也就无法使用shifts后门 这里我们可以降低本地rdp客户端的版本&#xff0c;也可以在目标机器上做如下设置&#xff1a; 第一个是设置远程桌面连接的…