网易易盾智能反外挂(Windows)接入文档

一、前言

此文档主要用于说明易盾端游反外挂的接入方案和步骤,文档适合产品、开发、测试等角色进行阅读,通过阅读文档能够快速的对整个接入方案有初步的了解。

1.1 隐私说明

网易易盾移动安全高度重视您以及您用户的信息保护,尊重并保护您和您用户的隐私是我们一直遵循的原则,也是我们设计所有软件和提供服务的基础。我们希望通过本文档帮助您了解易盾移动安全为您提供服务过程中是如何收集、使用、保护您和您用户的信息。

易盾移动安全深知用户信息对您和您用户的重要性,并会尽全力保护您和您用户的信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您和您用户的信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、公开透明原则等。同时,我们承诺,依据《中华人民共和国网络安全法》以及互联网行业关于信息保护的法律法规,并参考《信息安全技术 个人信息安全规范》(GB/T 35273-2017)等推荐性国家标准,将按业界成熟的安全标准,采取相应的安全保护措施来保护您和您用户的信息。

因此,在使用易盾移动安全产品或服务前,请您仔细阅读并充分理解本文档。您应同意同时在您的移动应用中让您的用户知晓并同意相关数据采集的权限,以便于我们向用户提供更好的用户体验和提高服务质量。若您不同意本文档的内容,您应停止使用易盾移动安全的产品或服务。

本文档将帮助您了解以下内容:

  1. 我们如何收集和使用您和您用户的信息
  2. 我们是否会共享、转让、公开披露您用户的信息
  3. 我们如何保护您和您用户的信息
  • 我们如何收集和使用您和您用户的信息

易盾移动安全仅会出于安全保障的需要以及目的,并通常会在征得您同意的情况下收集和使用您和您用户的信息,我们收集、使用信息的方式如下:

  • 您主动向我们提供的信息

(1)注册网易云易盾账号:需要您所提供的电子邮箱、手机号码,联系人信息,如果您是企业开发者,需要提供您的公司名称。

(2)创建产品:需要提供您的产品信息,包括应用名称、签名信息等。

(3)您主动上传的业务数据:针对安全风险智能挖掘功能,您可自行上传业务数据以便进一步提高产品效果,游戏行业的业务数据如:角色ID、角色名称、账号、角色服务器、游戏版本号、资源版本号。

  • 在您使用易盾移动安产品或服务过程中我们收集和使用的信息

我们提供的业务功能需要依赖部分信息才得以运行,您选择使用易盾移动安全产品或服务,则需要向我们提供或允许我们收集不同的必要合理用户信息。以下将详细列出为实现各业务功能所必需收集的信息类型,若您拒绝提供,则无法使用易盾移动安全的相应产品或服务。

  • 端游智能反外挂

在您购买了端游智能反外挂服务中的智能管家、数据中心功能后,我们会通过集成的SDK在您的用户中收集信息,并通过加密方式传送到易盾移动安全服务器,进行外挂智能挖掘,SDK收集并存储的信息包括但不限于:

基础信息:协议版本号、平台、应用名、操作系统版本、应用版本号、第一次安装时间、上次更新时间。

设备信息: IP地址、MAC地址、CPUID、硬盘序列号、屏幕高、屏幕宽、电脑配置信息。

环境信息:进程列表、本进程模块列表、窗口信息、内存信息。

行为数据:用户在终端屏幕中点击、拖动的行为数据。

在检测到外挂时,我们会收集以下信息作为外挂使用取证:截图、外挂使用记录、外挂样本文件提取、外挂窗口信息、外挂驱动信息获取、外挂硬件设备信息等。

  • 我们是否会共享、转让、公开披露您用户的信息

我们不会与易盾移动安全以外的任何公司、组织和个人共享、转让您用户的信息,更不会在任何场景公开披露,除非在获得您和您用户的明确同意,或者在法律、法律程序、诉讼或政府主管部门强制性要求。

  • 我们如何保护您和您用户的信息

我们已使用符合业界标准的安全防护措施保护您提供的信息,防止数据遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会采取一切合理可行的措施,保护数据安全。我们会使用加密技术确保数据的保密性;我们会使用受信赖的保护机制防止数据遭到恶意攻击;我们会部署访问控制机制,确保只有授权人员才可以访问。

我们依据《网络安全法》、《个人信息安全规范》等一系列法律法规和行业标准已先后制定了部门《安全总纲》、《数据分类分级规范》等各种管控流程和应急响应制度等,对管理体系建设、物理环境安全、主机安全、应用系统安全、网络安全、数据安全等维度都进行了建设和落实。

二、接入说明

本方案利用Windows系统动态库注入的技术原理,支持游戏无主进程源码的接入方式,可以提高游戏方接入的效率,并降低接入的工作量。

游戏产品方只需要在游戏启动器(游戏无启动器时,也可以选择游戏本身)的程序里接入易盾提供的NEPLauncherSDK,SDK会提供游戏角色信息初始化等接口。接好SDK后,再使用易盾方提供的加固工具加固游戏主程序即可。

2.1 接入流程

游戏接入流程如下图所示:

image title

2.2 方案优势

此方案的优势在于:

  1. 只要接入在游戏启动器中,无需重复接入不同的游戏,降低了游戏方的接入工作量。
  2. 对于发行方在源代码的情况下,也能通过加固工具快速接入反外挂服务,使其发行的产品也能拥有易盾的反外挂能力。

三、接入步骤

3.1 集成NEPLauncher

NEPLauncher的主要作用是用来接收游戏账号信息,并不提供任何安全功能,该步骤的接入工作由拥有账号信息的一方实施。为了在易盾监测到外挂时方便了解是哪个角色在使用外挂,因此这一步必须要接入,保证外挂检测信息与账号信息的关联。

该模块的接入方式有两种:动态库接入静态库接入。动态库接入方式较为简单,不需要考虑开发工具的版本及编译选项的适配工作;静态库接入方式的耦合性和隐藏性较好,不容易暴露账号信息;接入时,根据实际的场景选择一种接入方式即可。

下文对这两种方式做了简要介绍,具体的接入示例请见易盾方提供的接入Demo。

3.1.1 动态库接入

原生代码接入动态库

原生代码,指的是C/C++这样的可以直接编译为二进制机器指令的代码语言。

原生代码动态库SDK包含三个文件:

SetAccount.h

SetAccount.cpp

NEPLauncher.dll

接入步骤依次为:

  • 根据游戏将32位或64位的 NEPLauncher.dll 放置在游戏启动器同一目录(如果不能放置在同一目录, 请修改 SetAccount.cpp 中获取 NEPLauncher.dll路径的代码)
  • 在游戏登录逻辑相关代码处包含头文件:#include "SetAccount.h"
  • 调用SetAccountInfo接口初始化角色信息

其中SetAccountInfo接口声明如下:

enum NEP_MSG_TYPE {
	NEP_MSG_MIN = 0,
	NEP_MSG_LOGIN = 1, //登录
	NEP_MSG_LOGOUT = 2, //登出
	NEP_MSG_MAX
};

bool SetAccountInfo(
	IN LPCWSTR szAccount,			// 玩家账号
	IN LPCWSTR szUid,				// 玩家uid
	IN LPCWSTR szServerName,		// 所在服务器名称
	IN int nServerId,				// 所在服务器id
	IN LPCWSTR szRoleName,			// 角色名
	IN int nLevel,					// 角色等级
	IN unsigned int nGameProcessId, // 游戏 pid
	IN LPCWSTR szAppId,				// 游戏 appid
	IN NEP_MSG_TYPE eMsgType		// 登录、登出 传0代表进记录账号
    );
Unity3D接入动态库

由于Unity3D工程无法直接接入静态库SDK,所以接入时必须选择动态库的形式。具体接入代码请见SDK中的UnityDemo工程。

SDK中包含NEPLauncher.dll一个文件,接入步骤依次为:

  • 参照Demo,封装C#接口
  • 调用该接口

C#接口封装示例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace UnityCSharp
{
    class NepAccount
    {
        // 1-登录
        public static uint NEP_ACCOUNT_LOGIN = 1;
        // 2-登出
        public static uint NEP_ACCOUNT_LOGOUT = 2;
        // 0-默认值 仅记录账号 不记录登录状态
        public static uint NEP_ACCOUNT_DEFAULT = 0;

        public static bool SetAccount(
                string account,
                string uid,
                string serverName,
                int serverId,
                string roleName,
                int roleLevel,
                uint gameProcessId,
                string appId,
                uint state)
        {
            try
            {
                return NepAccount64.NEP_SetAccountInfo(account, uid, serverName, serverId, roleName, roleLevel, gameProcessId, appId, state);
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
                return false;
            }
        }

        class NepAccount64
        {
            [DllImport("NEPLauncher.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
            [return: MarshalAs(UnmanagedType.I1)]
            public static extern bool NEP_SetAccountInfo(
                string account,
                string uid,
                string serverName,
                int serverId,
                string roleName,
                int roleLevel,
                uint gameProcessId,
                string appId,
                uint state
                );
        }
    }
}

调用示例如下:

try
{
    string account = "hello@163.com";
    string uid = account; // UID不可为空或重复,用作唯一标识玩家
    string serverName = "测试服01";  // 服务器名
    int serverId = 30001;  // 服务器ID
    string roleName = "测试角色名";  // 角色名
    int roleLevel = 80;  // 角色等级
    uint gamePID = 0;  // 接入SDK的进程与游戏进程为同一个可填0 否则填游戏PID
    string appId = "W004904183";  // 易盾后端创建产品对应的APP_ID

    bool result = NepAccount.SetAccount(
        account,
        uid,
        serverName,
        serverId,
        roleName,
        roleLevel,
        gamePID,
        appId,
        NepAccount.NEP_ACCOUNT_LOGIN);

    if (result == true)
    {
        Console.WriteLine("角色初始化接口调用成功");
    }

    Console.ReadLine();
}
catch (Exception ex)
{
    Console.Write(ex.ToString());
}

3.1.2 静态库接入

和动态库接入方式一样,接入SDK的目的即是初始化玩家的角色信息,以便在命中外挂时可以进行关联。

静态库SDK包括以下两个文件:

NEPLauncher.h

NEPLauncher.lib

其中NEPLauncher.lib区分32位或64位,编译选项MT/MD,Unicode/MultiByte,编译工具v141/v142;

其中v141最低支持的Visual Studio版本为2015,低于2015的VS版本请选择动态库接入方式。

初始化角色信息

在游戏内登录、登出处,调用NEP_SetAccountInfo接口:

bool NEP_SetAccountInfo(
IN LPCWSTR szAccount,			// 玩家账号
IN LPCWSTR szUid,				// 玩家uid
IN LPCWSTR szServerName,		// 所在服务器名称
IN int nServerId,				// 所在服务器id
IN LPCWSTR szRoleName,			// 角色名
IN int nLevel,					// 角色等级
IN unsigned int nGameProcessId, // 游戏 pid(0为当前进程)
IN LPCWSTR szAppId,				// 游戏 appid
IN unsigned int msgType         // 仅记录账号(0) 角色登录(1) 登出(2)
);

字符串统一使用Unicode字符串。其中用来作为玩家唯一标识的 szUid和游戏 szAppId 不能为空(AppId请咨询易盾技术支持或者客服获取), 游戏进程pid 必须设置为真实游戏进程 pid。

角色行为msgType
不校验登录登出 值为0NEP_MSG_MIN
角色登录 值为1NEP_MSG_LOGIN
角色登出 值为2NEP_MSG_LOGOUT
检查反外挂工作状态(可选)

在静态库SDK中,除了必要的初始化角色信息接口外,可选接入该接口,用来检查易盾反外挂引擎的工作状态是否正常。

调用一个初始化接口NEP_InstallStatusChecker即可,声明如下:

// NEP状态校验回调函数
using NEPStatusCallback = bool(_stdcall*)(NEPSTATUS statusCode);


// 接口调用返回值枚举
enum INSTALLRESULT {
	SUCCESS_INSTALLED = 0,      // 安装成功
	FAIL_CALLBACK_INVALID = 1,  // 回调函数异常
	FAIL_INTERVAL_INVALID = 2,  // 校验间隔异常
	FAIL_UNEXPECTED = 4         // 未知错误,需联系易盾方
};

// 状态检查初始化接口
uint64_t NEP_InstallStatusChecker(
	NEPStatusCallback callback,  // 回调函数
	DWORD gameProcessId = 0,  // 游戏主进程ID,0视为与Launcher同进程
	ULONG intervalSeconds = 60,  // 校验间隔,单位为秒,范围为(20, 3600)
	bool isCallbackOnlyAbnormal = true  // true:仅在检测到异常时回调  false: 完成一轮检测即调用
);

当检测到反外挂工作异常时,检测逻辑会异步地调用回调函数,通知游戏客户端出现了异常;

游戏客户端可以根据返回的状态码采取一定的措施,例如:警告弹框、踢下线、崩溃退出游戏等。

状态码释义如下:

// 状态校验枚举
enum NEPSTATUS {
	eNEP_Status_Normal = 0,		// 正常
	eNEP_Status_NotLoaded = 1,		// 反外挂核心未启动
	eNEP_Status_FileNotFount = 2,	// 反外挂文件未找到
	eNEP_Status_FileModified = 4,	// 反外挂文件被篡改
	eNEP_Status_Suspended = 8,		// 反外挂功能停止
	eNEP_Status_TiggerEvent = 16,	// 反外挂功能异常
eNEP_Status_InternalWardenError = 32, // 内部校验错误
};

另外,部分场景下可能需要停止状态校验,可调用停止状态校验的接口(一般不推荐这么做):

void NEP_UninstallStatusChecker();

若需要同步地(立即返回)校验反外挂状态,可调用同步接口:

NEPSTATUS NEP_GetSecurityStatus();

NEP_GetSecurityStatus返回值即为状态校验枚举值NEPSTATUS其中之一。

3.2 集成加载动画(可选)

对于启动时间较长的程序,为避免用户长时间等待,给用户一个较好的体验,可以选择性地接入splash程序,用于在桌面的右下角显示一个加载动画,如下图

image title

该模块没有任何反外挂或者保护的功能,请不要与反外挂功能或者加固保护功能放在一起调用,该模块仅仅为用户提供一个程序启动时的友好提示,如无必要可以不接,以免引起分析者的注意进而分析保护系统。

类似地,加载动画分为静态库接入和直接加载两种接入方式。

下面对这两种方式做了简要介绍,具体的接入示例请见Demo。

3.2.1 静态库接入动画

静态库方式接入由易盾方提供以下文件:

NEPSplash.h

libNEPSplashWindow.lib

libNEPSplashWindow.res

接入步骤(一般建议在游戏启动器中接入并调用):

  • 修改需要接入动画的工程配置,将libNEPSplashWindow.res作为附加依赖项(VS工程属性-配置属性-链接器-输入-附加依赖项)
  • 在合适的位置包含头文件NEPSplash.h,引入静态库libNEPSplashWindow.lib
  • 在合适的时机调用展示动画的接口

接口声明如下:

/// <summary>
/// 展示NEP启动动画
/// </summary>
/// <param name="isAsync">是否异步展示动画,默认为异步</param>
void NEP_ShowSplash(bool isAsync);

接口仅包含一个参数,用以控制动画是否异步展示(若isAsync值为false,动画将同步展示,阻塞当前线程)。

3.2.2 直接加载动画进程

若游戏开发环境不适合试用静态库接入动画的方式,可采用这种方式。

具体步骤为:

  • 向易盾方索要加载动画程序NEPSplash.exe
  • 在合适的时机(如点击了游戏启动器的“开始游戏”按钮后)启动NEPSplash.exe即可,NEPSplash.exe启动后会立即展示加载动画。

3.3 加固游戏主程序

在接入相关SDK之后,即可使用加固工具加固游戏主程序了。

请知悉,加固的目的是将反外挂引擎与相应模块打入到游戏主程序中,并且提高游戏主程序与反外挂引擎之间的耦合性,避免被绕过。

这里说的加固工具应用在反外挂场景中时,并不包含对PE文件的代码保护功能。

加固命令相机按下一章节“加固工具使用说明”。

若存在对加固命令存在疑问,或不了解游戏需要着重什么保护类型的情况,请将接入了NEPLauncherSDK的游戏程序打包,并发送给易盾方。

由易盾方的技术支持会为您配置加固选项,并做加固测试。

加固后重签名

加固完成后,游戏主程序原本的签名会被抹去,并回传一个新的zip包;

假定游戏主程序叫game.exe,加固成功后,会回传一个zip包,包含如下文件:

game.exe(加固后的)

NEPDaemon.exe

NEP2.dll

bugrpt.exe

由于加固过程中使用了PE加壳等技术,部分设备上会存在被部分杀毒软件误报的情况。

因此这里必须对game.exe与NEP2.dll进行签名。

3.4 接入服务端OpenAPI(可选)

当易盾方检测到使用了外挂的玩家后,会将该玩家的账号、外挂类型、外挂名称、外挂证据等信息同步到易盾官网后台,可以登录到后台查询该部分数据,且支持导出文件。

然而官网查询数据只保留七天,且人工操作登录与查询的步骤较为繁琐,因此游戏方可以选择接入易盾方提供的OpenAPI SDK,接入后只需要调用相应接口,即可查询到指定时间段内存在作弊行为的玩家信息,且可以将调用API查询数据的逻辑与游戏自身的处罚措施相结合。

OpenAPI的接入方式另见OpenAPI相关文档。

四、加固工具使用说明

解开加固工具压缩包,可看到NHPProtect.jarconfig.ini两个文件;

其中配置文件config.ini中请填写易盾后台关联的appKey,请勿泄漏或自行更改;

加固工具为NHPProtect.jar, 依赖Java运行时环境(推荐Java版本为1.8)适用于 Windows、Linux以及Mac系统;

以下均以Windows环境下描述,其他系统环境使用方法类似。

4.1 命令行参数

java -jar NHPProtect.jar -WinEnc [options] -input %path/to/input/file%

4.2 参数说明

参数说明
-WinEnc必填项,用于标识加固对象为Windows平台上的应用或游戏
[options]可选项,用于标识加固开启的功能
-input [file_path]必填项,参数后跟待加固的zip包或PE文件的路径

可选参数说明:

参数说明
-yunconfig推荐使用,用于开启易盾后台配置的反外挂功能,目前暂不支持本地配置反外挂功能,反外挂加固时该参数必选
-target [pe_filename]指定保护的PE文件,仅当input参数不为PE文件时需要指定,若input参数为单独PE文件,则无需再指定该参数
-enginetype [type]type值可选DEFAULT, u3d_mono, u3d_il2cpp, cocos2d,不填该参数时默认为DEFAULT,表示常规应用,不接入游戏引擎保护功能
-u3dastenc加密Unity3D的Asset Bundle,仅在enginetype为u3d_mono或u3d_il2cpp时生效
-u3dstaticasset加密Unity3D的静态资源,仅在enginetype为u3d_mono或u3d_il2cpp时生效
-dll [mono_dll_list....]指定需要加密的mono dll文件名,可跟多个文件,仅支持用户自定义代码的dll,如Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll和一些插件dll,仅在enginetype为u3d_mono时生效
-SingleDllEnc该参数单独使用,指定Unity3D MONO DLL单独加密
-SingleAstEnc该参数单独使用,指定Unity3D Asset Bundle单独加密
-SingleStaticVM该参数单独使用,指定PE文件单独加壳

出于加固稳定性的考虑,目前反外挂与反破解的功能不支持在jar加固工具中指定开启或关闭,我们会为您在后台配置最为合适的功能

请在执行反外挂加固时带上-yunconfig参数,否则将会缺失部分检测功能,甚至导致游戏引擎相关的保护失效。

4.3 加固示例

  • 游戏主程序接入反外挂
java -jar NHPProtect.jar -WinEnc -yunconfig -input %path/to/game.exe%
  • Unity3D游戏整包加固
java -jar NHPProtect.jar -WinEnc -target game.exe  -enginetype u3d_mono  -u3dastenc -u3dstaticasset -dll Assembly-CSharp.dll Assembly-CSharp-firstpass.dll -yunconfig -input %path/to/mono/game/zip%
  • 单独PE加壳
java -jar NHPProtect.jar -WinEnc -SingleStaticVM -input %path/to/pe/file%
  • 单独Unity3D Asset Bundle加密
java -jar NHPProtect.jar -WinEnc -SingleAstEnc -input %path/to/asset/file%
  • 单独Unity3D Mono DLL加密
java -jar NHPProtect.jar -WinEnc -SingleDllEnc -input %path/to/mono/dll%

4.4 兼容DRM方案

端游反外挂的加固方案针对游戏需要使用其他DRM(数字版权管理)解决方案打包的情况做了兼容。

在使用加固前,请先使用其他DRM方案进行打包,再使用易盾方提供的加固工具进行加固。

如若要兼容Steam DRM方案,请先使用其DRM打包工具的兼容模式打包,打包完成后再使用易盾的加固工具。

Steam DRM兼容模式的打包命令如下,详细请见Steam官方文档对这部分的说明:

drm_wrap [appid] %path/to/input.exe% %path/to/output.exe% drmtoolp 6

若有遇到其他DRM方案无法兼容的情况,请及时告知易盾方,相关技术人员会第一时间排查并给出解决方案。

五、兼容性

5.1 签名(重要)

加固接入反外挂后,返回的文件中包含两个未签名的PE文件:游戏加固目标Game.exe与反外挂引擎核心模块NEP2.dll。

由于加固过程中使用了PE加壳等技术,部分设备上会存在被部分杀毒软件误报的情况。因此这里必须对Game.exe与NEP2.dll进行签名。

5.2 客户端

目前支持的客户端平台有:

  • Windows Vista
  • Windows 7
  • Windows 8
  • Windows 8.1
  • Windows 10

但考虑到游戏性能、不同的图形引擎支持等情况,NEP会根据产品方的需求对系统支持做相应调整。

5.3 服务端

以SaaS方式提供服务,需求方无需提供服务器资源。目前数据查询和统计均会放在易盾官网的管理后台( https://dun.163.com/ )。

六、测试验证

在完全接入易盾反外挂之后,上线之前,可以做下测试验证,主要的测试维度有:反外挂功能是否启用、外挂检测数据是否上报、兼容性、回归测试。

6.1 功能启用情况测试

验证反外挂功能已接入:

  1. 启动接入后的游戏
  2. 管理员模式打开ProcessExplorer或其他进程检测工具
  3. 观察游戏进程的模块列表,若包含NEP2.dll,则说明成功接入

6.2 数据上报测试

反外挂引擎检测的异常数据分为两种,一种是确认的风险行为或外挂数据,这部分数据会同步到易盾官网后台,可以直接查询到;

另一种是疑似外挂的可疑数据,这部分会先上传至易盾私有后台,经过后台反外挂规则和运营同学排查后,筛选出新的确认外挂数据再同步到易盾官网后台。

如何验证官网后台数据上报正常:

  • 启动加固后的游戏(需要登录,否则无法同步到账号数据)
  • 启动Cheat Engine (后简称CE,一般常用来修改游戏内存、调试游戏进程,可篡改本地客户端的数据,达到作弊的效果)
  • 使用CE打开游戏进程(在菜单中点击File - Open Process,之后选择对应游戏)
  • 稍等片刻(约5分钟),前往易盾官网后台查询数据

这里列举一些可能引起数据上报无法打通的问题,在自测无法查询到数据时,可以逐一排查比对:

  • 接入SDK所用APP_ID与加固时的APP_KEY不对应(官网后台查看)
  • 接入SDK时用户唯一标识UID为空
  • 游戏未登录,导致检测数据无法关联
  • 游戏启动后马上关闭,即游戏进程在检测数据上报之前已退出

6.3 外挂样本测试

游戏方若有平时积累的外挂样本,可以在此环节进行测试,开启游戏开启外挂,验证易盾反外挂的检测效果,检测效果可以在易盾官网后台查看。

登录易盾官网后台,在左侧菜单选择“智能反外挂”,在展开项中选择“数据查询”,在“外挂检测”、“风险检测”、“应用环境检测”中不做勾选,点击“查询”按钮,可看到给定时间范围内所有的检测数据。

请知悉,由于PC端外挂种类较多,外挂确认的方法较为复杂,为了避免误报,易盾官网展示的“外挂检测”数据都是完全确认的,也即会有一部分未确认的外挂数据未展示在易盾官网后台。

因此若官网后台查询不到检测数据,请联系易盾方检查私有后台数据,若私有后台有数据,则易盾方录入特征后会将这部分数据同步至官网后台,无需升级方案;若私有后台未检测到数据,请将外挂样本及其测试方法一并反馈至易盾方,易盾方会进行相应的外挂分析,若有必要,会迭代反外挂引擎。

6.4 兼容性测试

易盾端游反外挂引擎已在第五章提及的系统中做了测试,确保上线的功能稳定有效。

游戏方在接入后,进一步兼容性测试可以按照游戏本身锁需兼容的设备及系统进行验证测试。

如果有因为引入易盾反外挂模块导致的问题,请将问题现象及复现步骤反馈给易盾,易盾方会第一时间排查并给出解决方案。

6.5 其他回归性测试

按照游戏的常规回归测试进行,如果发现有功能异常、卡顿、黑屏、CPU或内存占用过高等现象,请先进行原版自测,在确认是引入易盾反外挂模块导致的问题后,请将问题现象及复现步骤反馈给易盾,易盾方会第一时间排查并给出解决方案。