游戏反外挂方案解析
近年来,游戏市场高速发展,随之而来的还有图谋利益的游戏黑产。在利益吸引下,游戏黑产扩张迅猛,已发展成具有庞大规模的产业链,市面上游戏受其侵扰的案例屡见不鲜。
据《FairGuard游戏安全2022年度报告》数据统计,2022年累计收集外挂样本5826款,同比增长52%;安全对抗更激烈,多项数据呈上涨趋势,全年累计检测游戏安全风险同比增长96%。
2022年FairGuard游戏安全风险分布占比图
因游戏作弊门槛低、游戏安全对抗不对等、黑灰产业链发展完善、法律维权门槛高等因素,游戏安全问题形势愈发严峻,「游戏反外挂」已经成了厂商的必修课。
FairGuard游戏加固基于十余年游戏安全对抗经验,将从外挂实现原理及分类、游戏反外挂方案维度,结合案例进行分析并与大家分享。
常见的游戏外挂攻击方式有:注入、内存修改、变速器、模拟点击、抓包、虚拟环境、破解等。
注入挂案例分析
注入挂,顾名思义是将外挂模块注入到游戏进程空间中,同时执行功能模块的入口函数,多涉及内存操作且功能丰富。
从注入过程上,Android系统一般采用SO注入、ptrace注入、 Zygote注入及感染ELF文件的方式。iOS系统在越狱后可以利用Cydia框架注入dylib实现。
开启外挂并成功注入游戏后,通过外挂界面引导玩家使用功能,随后调用接口函数以HOOK操作来挂钩相应函数、改写参数或者通过调用逻辑,从而实现外挂功能。
Android平台导入表Hook流程图
与其他外挂类型相比,注入挂修改游戏代码逻辑的方式更加灵活多样,并且破解者会通过多种手段隐藏注入模块,导致注入挂的排查难度更高、排查周期更久,对游戏造成的负面影响也更加严重。
内存修改挂案例分析
内存修改外挂是最常见的外挂种类,实现原理是通过内存修改器来搜索、定位游戏内存,再对数值模块进行修改。
针对游戏不同类型与玩法,内存修改外挂会造成不同程度的危害,如:修改游戏内角色的攻击力的秒杀挂,修改游戏交易货币数量的无限金币挂、修改游戏关键道具数量等,这类外挂会严重破坏游戏的公平性,引发正常玩家不满。
通过修改商品售价实现无消耗购买道具
exe模拟器修改挂
exe模拟器修改挂本质上是内存修改,但其以exe程序运行在PC端,而游戏运行在PC模拟器中。这时候,外挂不再读写游戏程序内存,而是读写整个模拟器中的数据,通过反复定位,也可以实现内存修改的效果。
exe模拟器修改挂案例演示
这类外挂有两大检测难点:
● 无需开启Root权限即可搜索内存进行数值篡改,让以往的安全环境检测方案难以排查。
● 游戏在运行过程中,数值会实时变动,进行数值排查需要耗费更久的周期,严重影响对抗效率。
变速挂案例分析
众所周知,游戏在运行中需要以帧为单位播放画面,而计算每帧动画播放所需时间,则需要调用C库函数来获取系统时间。如:
// 获取当前精确时间
gettimeofday;
// 获取系统时间
clock_gettime;
这类变速外挂的实现原理就是通过修改获取到的系统时间,来加快或放慢游戏内的时间流速。此外,部分变速外挂通过调用UnityEngine_Time_set_timeScale,传入想要加速的倍数,来实现全局加速效果。
因游戏玩法不同,变速外挂会造成不同的影响,如音乐类、跑酷类游戏可以通过放慢速度,大幅度降低游戏难度。而涉及到养成的游戏则可以加速材料收集进度,缩短游戏的养成周期。
通过加快速度,缩短游戏养成周期
这类外挂会严重破坏游戏的公平性,引发正常玩家不满,如果不加以制止,会急剧缩短游戏的生命周期。
代码篡改案例分析
部分外挂作者还会使用静态分析与动态调试相结合的形式,通过逆向分析手段直接修改游戏客户端代码逻辑来制作“破解版”。常见的破解版游戏会外置功能菜单,实现控制数值修改、去除广告甚至内购破解。
某游戏破解版附带的外挂功能
这类破解版游戏会附带一系列吸引玩家的外挂功能,其存在会严重挤压正版空间,对游戏收益造成直接影响。
游戏资源篡改案例分析
当下游戏作弊的角度可谓五花八门,除了常见的作弊手段,外挂作者还会通过各种刁钻的角度进行作弊,如篡改游戏内资源文件。
如FPS游戏中,外挂作者通过篡改游戏中地图资源的材质,将其修改成透明,实现了“透视”外挂功能。
相比其他外挂,这类资源篡改外挂角度更加刁钻且难以排查,一旦出现这类外挂,会在短时间内扩散,造成非常严重的游戏平衡问题。
模拟点击挂案例分析
常见的模拟点击外挂可通过设置按键位置、按键顺序、按键间隔时间等参数,制作自动化模拟点击脚本。
某软件的模拟点击功能
在特定的游戏环境下,选择模拟点击方案,从而实现自动打怪,自动任务,自动挂机领奖励等功能。这类模拟点击外挂,会对游戏平衡造成极大影响,破坏正常玩家游戏体验。
封包挂案例分析
在游戏运行过程中,我们点击某个按钮或进行某种游戏行为的时候,客户端会按照跟服务器约定好的规则,将游戏行为请求和参数通过网络封包发送给服务器,服务器收到请求后做出解析,将信息处理后反馈回客户端,客户端再将反馈信息进行解析展示给玩家。
正常状态下游戏数据交互
破解者通常会使用抓包工具,获得游戏封包数据。当破解者抓取到了封包数据并破解后,即可随意篡改游戏内上下行的数据,如游戏角色攻击力、生命值、游戏内胜负逻辑、投降判负逻辑等,从而实现一系列外挂功能。
通讯协议破解后的客户端服务器交互
虚拟环境案例
所谓虚拟环境,是指独立于设备原有系统/破坏设备原有系统的环境,如:iOS越狱、Android Root、虚拟机、虚拟框架、云手机等。这类虚拟环境可以为外挂提供更高级别的设备权限,是游戏外挂滋生的温床。
游戏如何应对外挂问题?
面对日益庞大的游戏黑灰产侵扰,游戏厂商亟需一支强大、专业的游戏安全队伍。FairGuard以技术为驱动,研发了多项业界独家技术,搭建了针对不同场景及游戏类型的功能矩阵,可覆盖游戏全场景安全问题。
-
反外挂功能
针对游戏将面临一系列外挂修改风险,FairGuard研发了行为检测方案,搭配200+维度的智能感知系统,可通杀各类外挂及其变种,做到有效防护。
-
防破解功能
FairGuard业界独家「无API签名校验技术」,对游戏的引擎与代码进行深度加密,并对游戏包签名和文件完整性进行多重校验,极大地减少被绕过的可能性,防止游戏被植入恶意模块、剔除广告等行为。
-
主动识别恶意模块机制
区别于市面上其他安全产品,需要获取样本后进行外挂打击,FairGuard独家「主动识别恶意模块机制」可对游戏内可疑模块进行主动识别,搭配在线打击功能做到主动防御,大幅缩短外挂排查周期。
-
反注入器功能
禁止使用Xposed、Frida等各种外挂模块注入器,防止注入后修改游戏内存等各种恶意行为,一旦发现立即闪退。
-
反引擎级变速
深入游戏引擎底层,对引擎级的变速进行深度检测,获取具体变速倍数,可实现精准封号打击或闪退处理。
-
变速无效化
采用FairGuard独家无导入函数SO加壳技术,高强度加壳保护游戏内代码,经大量实机测试,可无视任何变速器及其变种,使其变速功能无效化。
-
资源加密功能
FairGuard独家资源加密方案,深入游戏引擎底层,结合游戏资源文件结构及加载机理精心构造。
可为游戏提供高强度加密保护,具备高兼容性、运行消耗小、性能无影响的特点,支持Android/iOS/PC三平台、支持资源在线更新。此外,方案进行了特殊优化,无需开发对接与接入,加解密对开发透明。
-
数据校验功能
FairGuard提供数据校验功能,可精准校验游戏上下行数据,保证游戏通讯协议安全,避免出现封包挂、私服问题。
-
安全环境检测
采用底层检测手段,精准识别游戏运行环境,如:越狱、ROOT、虚拟机、虚拟框架、云手机等,并提供个性化闪退策略。
相关文章:

游戏反外挂方案解析
近年来,游戏市场高速发展,随之而来的还有图谋利益的游戏黑产。在利益吸引下,游戏黑产扩张迅猛,已发展成具有庞大规模的产业链,市面上游戏受其侵扰的案例屡见不鲜。 据《FairGuard游戏安全2022年度报告》数据统计&…...

基于郊狼算法优化的BP神经网络(预测应用) - 附代码
基于郊狼算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于郊狼算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.郊狼优化BP神经网络2.1 BP神经网络参数设置2.2 郊狼算法应用 4.测试结果:5.Matlab代码 摘要…...

【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless
全面测评TDSQL-C Mysql Serverless 文章目录 全面测评TDSQL-C Mysql Serverless前言什么是TDSQL-C Mysql Serverless初始化 TDSQL-C Mysql Serverless新建数据库建立数据表开启外网访问 兼容性SQL文件 导入导出navicat 直接在线传输 构建测试环境准备Python测试脚本准备 Jmeter…...

Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit
一、前言 QPlainTextEdit类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类https://blog.csdn.net/u014491932/article/details/132245486?spm1001.2014.3001.5501框架类QFramehttps://blo…...

数据结构-->栈
💕休对故人思故国,且将新火试新茶,诗酒趁年华💕 作者:Mylvzi 文章主要内容:详解链表OJ题 前言: 前面已经学习过顺序表,链表。他们都是线性表,今天要学习的栈也是一种线…...

强训第36天
C D C 193--1100 0001 194--1100 0010 196--1100 0100 198--1100 0110 能包括全部的且最小的为 1100 0xxx xxx为主机号,站三位 B MAC地址是绑定网卡的,全球唯一 D A C D IP网段 17为网络号 所以是 40.15.1aaa aaa(7位主机号).0 因为要划分2个子网 所以…...
PyTorch bug记录
1、RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same 这个错误是因为模型的权重是在GPU上,但是输入数据在CPU上。在PyTorch中,Tensor的类型和所在的设备(CPU或GPU)需…...

js中的正则表达式(一)
目录 1.什么是正则表达式 2.正则表达式在JavaScript中的使用场景: 3.正则表达式的语法: 1.什么是正则表达式 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象通常用来查找、替换那些符…...

免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件
免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具&am…...
使用Mybatis Plus进行DAO层开发
一、特性 Mybatis应该大家现在都知道,而且在项目中都在使用,因为这块ORM框架让大家能专心业务SQL的编写,数据库的连接,连接池的使用都不用关心,极大的提高了生产效率。 今天要给大家介绍的另外一款ORM框架࿰…...

Android中如何不编译源生模块
如果想让自己的app 替换系统的app 比如使用闪电浏览器替换系统的Browser 首先把闪电浏览器放到 vendor/rockchip/common/apps Android.mk LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE : Lightning LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_MODULE_C…...

安装Vue_dev_tools
Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接,有Vue2和Vue3的,dev_tools 以Google浏览器为例 点击设置(就是那三个点)->扩展程序->管理扩…...

【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)
【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典) 一、前言:二叉树的顺序结构二、堆的概念及结构三、堆的实现(本篇博客以实现小堆为例)3.1 准备工作3.2 初始化3.3 堆的插入3.3.1 向上调…...
css实现三角形的几种方法
css实现三角形的方法:1、使用边框实现三角形,利用透明边框和实色边框的组合,可以创建不同方向和大小的三角形;2、使用伪元素实现三角形,通过使用伪元素来创建一个占据父元素一半大小的实心三角形;3、使用tr…...

❤ Vue工作常用的一些动态数据和方法处理
❤ Vue工作常用的一些动态数据和方法处理 (1)动态拼接相对路径结尾的svg 错误写法一 ❌ 正确写法 🙆 <img :src"require(/assets//amazon/svg/homemenu${index}.svg)" style"height: 20px;display: block;margin: 0 au…...
SQLite的命令用法
学习数据库直达网站 https://www.runoob.com/sqlite/sqlite-tutorial.html(菜鸟教程) 这里只分享,基础操作,数据库创建打开……等等 用到查菜鸟教程即可 文章目录 学习数据库直达网站创建一个数据库方式1方式2 创建一个表格插入一…...

在jupyter notebook中使用海龟绘图
首先,安装ipyturtle3 ref:ipyturtle3 PyPI pip install ipyturtle3然后,安装ipycanvas ipycanvas是一个需要安装在与JupyterLab实例相同环境的包。此外,您需要安装nodejs,并启用JupyterLab ipycanvas小部件。 所有这些都在ipy…...

密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换
DH算法是第一个密钥交换算法,也是第一个得到形式化描述的公钥密码算法。 群论 DH密钥交换算法基于数学中的群论,群论也是当今大多数公钥密码的基础。 要使集合及其运算成为一个群,需要满足以下性质: 封闭性:群中两…...

Linux —— 进程间通信(管道)
目录 一,进程间通信 二,管道 匿名管道 命名管道 一,进程间通信 进程间通信(IPC,InterProcess Communication),即在不同进程之间进行信息的传播或交换;由于一般进程用户地址空间是…...
python常用
环境配置 conda Conda自动补全 在终端激活conda环境的时候按tab不能自动补全activate和环境名。安装后可用tab进行补全。 安装 conda-bash-completion 插件:GitHub 安装方法: conda install -c conda-forge conda-bash-completion常用命令 #创建虚拟…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...