手游智能反外挂(iOS-C#)接入文档

2024.03.14 20:19:08

    隐私说明

    详情请参照网易易盾隐私政策,请将易盾隐私政策链接放到应用“用户协议”中。

    接入说明

    接入步骤

    接入反外挂SDK,开发者需要完成以下步骤

    1. 根据游戏运行平台将SDK动态库拷贝到指定工程目录;
    2. 初始化SDK;
    3. 根据用户登录信息调用SDK接口函数;
    4. 验证SDK接入是否正确;
    5. 可选择性的接入相关功能性接口。
    

    文件说明

    在iOS系统下接入安全SDK所需的相关文件如下:

    libRiskPerception.a
    RiskPerception.cs
    RiskPerceptionSingle.cs(非单机版不需要导入)
    XCodeConfig.cs(自动化配置文件)
    

    接入步骤

    导入组件

    (1)使用RiskPerception.unitypackage

    打开unity工程,双击RiskPerception.unitypackage,导入文件到您的工程

    (2)添加头文件

    引入RiskPerception.cs

    权限说明

    在Xcode工程中的info.plist文件中添加

    1、App Transport Security Settings-Allow Arbitrary Loads(必须)
    2、Privacy - Location Always and When In Use Usage Description(非必须)
    

    使用SDK

    (1)初始化

    选择第一个或主场景(Scene),在任意脚本文件(建议选择较早加载的脚本)中调用如下代码进行初始化。

    a 中国大陆应用
    NTESSecProtect.InitWithAppId(AppID);
    
    b 台湾应用
    NTESSecProtect.SetServerType(2);
    NTESSecProtect.InitWithAppId(AppID);
    
    c 香港、澳门及非欧盟海外应用
    NTESSecProtect.SetServerType(3);
    NTESSecProtect.InitWithAppId(AppID);
    
    d 欧盟地区应用
    NTESSecProtect.SetServerType(4);
    NTESSecProtect.InitWithAppId(AppID);
    
    说明:

    设置区域信息的接口: SetServerType,需要在初始化接口: InitWithAppId之前调用。

    AppID可在智能反外挂下的服务管理查询AppID,或者可在群里咨询技术支持人员。AppID示例:I003722234

    (2)设置角色信息

    用户登录或者切换游戏账号的时候,调用以下接口

    NTESSecProtect.SetRoleInfo("userId","userName","userAccount","userSever","gameJson");
    
    说明:

    只有调用了SetRoleInfo接口,才会启动反外挂功能。

    接入验证

    1、确保工程中SDK相关接口已调用。

    2、运行程序,确保已触发相关接口。

    3、前往官网查询数据。 输入用户名进行查询

    SDK初始化

    接口用途:

    用于初始化反外挂SDK。

    注意:该接口为必须调用接口。

    接入须知:

    正常环境下,使用直传方式。如需接入透传模式,需联系技术支持人员,设置相应的透传服务器。 自动化透传模式客户端会自动转发到被拦截的请求。

    函数原型:

    直传模式

    public static void InitWithAppId(string appID);
    

    自动化透传模式

    public static void InitWithPassthroghUrl(string appID, string url);
    
    参数说明:
    参数 说明
    app_id 不同用户或游戏的唯一标识(非bundleID),可在智能反外挂下的服务管理查询AppID,或者可在群里咨询技术支持人员。AppID示例:I003722234
    url 透传服务器地址。url示例"https://www.netease163.com"。
    返回值说明:
    返回值 说明
    错误返回 NO 初始化失败
    正确返回 YES 初始化成功
    示例代码:
    NTESSecProtect.InitWithAppId(AppID);
    

    登录接口/设置角色信息

    接口用途:

    在进行数据采集的过程中,会将角色ID、角色名称、角色账号等设置在反外挂采集的数据中一同上传,标识了用户的信息后,对应有恶意行为的用户可以进行相应的惩罚

    注意:该接口为必须调用接口。

    函数原型:
    public static void SetRoleInfo(string userId, string userName, string userAccount, string userServer, string gameJson);
    
    参数说明:
    参数 说明
    user_id 用户ID,建议使用唯一ID。必传参数
    user_name 用户名称
    user_account 用户/玩家的账号;如业务方同时接入易盾反垃圾,则此账号需要与反垃圾接入中的account一致
    user_server 用户所在服务器
    game_json 自定义数据。请使用json字符串格式
    示例代码:
    NTESSecProtect.SetRoleInfo("userId","userName","userAccount","userSever","gameJson");
    

    设置自动化透传类型

    接口用途:

    在使用自动化透传后,可以设置自动化透传的类型

    接入须知:

    不使用自动化透传,不需要调用相关接口

    函数原型:
    public static void SetPassthroghType(int type)
    
    参数说明:
    参数 说明
    Type 1、自动透传模式会自动根据网络情况选择网络传输方案。
    2、强制透传模式。默认状态为自动透传模式。完全使用透传方案
    示例代码:
    public static void SetPassthroghType(2);
    

    设置区域信息

    接口用途:

    非中国大陆地区,因为网络和监管需要,需要设置区域信息,以支持在不同的地区使用不同的网络进行数据传输。

    接入须知:

    不调用此接口默认为中国大陆。非中国大陆应用和台湾地区,需要调用此接口。如不按规范设置,可能会有数据丢失问题存在。设置时,请与技术支持确认。

    函数原型:
    public static void SetServerType(int type);
    
    参数说明:
    参数 说明
    Type 服务器地区类型 1、中国大陆 2、台湾地区 3、香港、澳门及非欧盟海外地区 4、欧盟地区
    示例代码:
    台湾地区应用
    NTESSecProtect.SetServerType(2);
    香港、澳门及非欧盟海外地区 
    NTESSecProtect.SetServerType(3);
    欧盟地区
    NTESSecProtect.SetServerType(4);
    

    退出登录

    接口用途:

    账号退出登录可以使用以下接口。

    接入须知:

    如果切换账号可以直接使用“设置角色信息”接口,会自动退出自己登录的账号。

    函数原型:
    public static void LogOut();
    
    示例代码:
    NTESSecProtect.LogOut();
    

    心跳系统

    接口用途:

    保障反外挂服务的安全,防止易盾反外挂服务被中止或者被剥离的风险,定时向游戏方反馈心跳信息,告知游戏方当前反外挂运行状态,既方便游戏方实时掌握反外挂运行状态,也能保障易盾反外挂服务的正常运行。

    接入须知:

    设置心跳回调。心跳系统每十秒调用一次或者出现异常的情况下会触发回调。(心跳系统在非主线程中运行,如需进行UI操作请切回到主线程中。) 回调结果需要进行解密。对接时请联系运营同学,获取相应的解密文件。

    函数原型:
    public static extern void ___heartbeatCheckResult(heartBeatCallBack callBack);
    
    public static extern void ___heartbeatCheckResultWithType(int type, heartBeatCallBack callBack);
    
    参数说明:
    参数 说明
    type 1为未加密数据,2为加密数据,需要服务端进行解密
    callBack heartBeatCallBack 加密数据
    解密后参数说明:
    名称 标示 说明 异常情况 是否每次必有
    序列号 seq 从初始值“1”开始递增 序列号不存在,或者乱序
    时间戳 t 当前时间戳,以秒为单位 时间戳非当前时间
    网络标识 net 数据发送是否成功
    (1 为成功,0 为失败)
    网络异常,数据发送失败,则网络标识为0
    • 易盾网络通信正常时:
    seq:1||t:1589781840||net:1
    
    • 当易盾网络通信异常时:
    seq:1||t:1589781840||net:0
    

    处理建议:

    • seq、t和net是否出现,这三个标识是心跳系统一定会返回的值,如果没有出现,说明反外挂异常。
    • seq的值是否符合"从1开始依次递增"的规则,如果不符合,说明返回值被篡改。
    • net为0是否长期出现,如果在5分钟内net的取值都为0,说明可能存在网络异常。
    • net第一次为0的时候,建议发送自助式透传数据到易盾服务器,在后续再次从1->0的时候再次发生自助式透传数据。
    示例代码:

    注册回调

    #if UNITY_IPHONE || UNITY_IOS
    
    		if (Application.platform == RuntimePlatform.IPhonePlayer)
    		{
    			NTESSecProtect.heartBeatCallBack render = new NTESSecProtect.heartBeatCallBack(heartBeatAction);
    			NTESSecProtect.___heartbeatCheckResult(render);
    		}
    
    #endif
    

    回调函数

    [MonoPInvokeCallback(typeof(heartBeatCallBack))]
    public static void heartBeatAction(string result)
    {
    
       UnityEngine.Debug.Log(result);
    
    }
    

    举报系统

    接口用途:

    游戏场景下,若玩家A发现玩家B有存在使用外挂嫌疑,玩家A可通过游戏举报系统举报B。游戏方举报系统可接入易盾举报验证功能判断B游戏用户是否使用了外挂。

    接入须知:

    接入易盾举报系统后,游戏方可对举报系统后,进行数据清洗,筛选出有用的举报信息,并及时处理;也可凭借易盾智能反外挂挖掘类似恶意玩家。服务端接口文档

    函数原型:
    public static void ReportedRoleInfo(string userId, string userName, string userAccount, string userSever, string report_desc, int verification_span, NTESRiskReportType report_type);
    
    参数说明:
    参数 说明
    user_id 用户ID,建议使用唯一ID。必传参数。
    user_name 用户名称
    user_account 用户/玩家的账号;如业务方同时接入易盾反垃圾,则此账号需要与反垃圾接入中的account一致
    user_server 用户所在服务器
    report_desc 举报描述
    verification_span 查询时间维度。以小时为单位,最大为24小时。建议设置为1
    report_type 外挂:NTESRiskReportPlug
    工作室:NTESRiskReportStudio
    示例代码:
    NTESSecProtect.ReportedRoleInfo ("userId","userName","userAccount","userSever"," report_desc ",1, NTESSecProtect.NTESRiskReportType.NTESRiskReportPlug);
    

    数据查询

    接口用途:

    通过查询类型获取指定的数据。可用于获取签名信息、 越狱状态、 SDK版本、白盒加密。

    函数原型:
    public static string QueryData(NTESRiskQueryType queryType, string data);
    
    参数说明:
    参数 说明
    queryType NTESRiskQuerySignInfo 签名信息
    NTESRiskQueryRootStatus 越狱状态
    NTESRiskQuerySDKVersion sdk版本
    NTESRiskQueryWhiteBox 白盒加密
    NTESRiskQueryWhiteBoxDec 白盒解密
    NTESRiskQueryYiDunID 跨应用ID

    data | 白盒加密时需要传入,其他使用可为空

    返回值说明:
    返回值 说明
    NSString * 对应查询的数据
    示例代码:
    string sign = NTESSecProtect.QueryData(NTESSecProtect.NTESRiskQueryType.NTESRiskQueryRootStatus,"");
    

    白盒加密

    接口用途:

    可用于对数据进行加密和解密。

    接入须知:

    白盒加密每个客户端都有单独的白盒查找表在RiskPerceptionBundle.bundle文件(需要找运营获取),需要将文件加入工程中和sdk同一目录下。

    函数原型:
    public static string QueryData(NTESRiskQueryType queryType, string data);
    
    参数说明:
    参数 说明
    queryType NTESRiskQueryWhiteBox 白盒加密
    NTESRiskQueryWhiteBoxDec 白盒解密
    data 传入加密数据
    返回值说明:
    返回值 说明
    NSString * 加密或解密数据
    示例代码:

    加密

    string sign = NTESSecProtect.QueryData(NTESSecProtect.NTESRiskQueryType. NTESRiskQueryWhiteBox,"白盒加密数据");
    

    解密

    string sign = NTESSecProtect.QueryData(NTESSecProtect.NTESRiskQueryType. NTESRiskQueryWhiteBoxDec,"解密数据");
    
    

    自助式透传

    接口用途:

    用于获取透传数据,进行自助式数据转发。

    接入须知:

    游戏方自行选择获取数据的时机。建议将数据合并到其他加密数据中,发送到游戏服务器,通过请求发送到易盾服务器。

    函数原型:
    public static extern string GetUploadData();
    
    
    返回值说明:
    返回值 说明
    string 此处获取的数据为body数据。服务端相关设置内容参考服务端接口文档
    示例代码:
    string sign = NTESSecProtect.GetUploadData();
    

    作弊监控/支付安全

    接口用途:

    用于实时获取作弊监控、支付安全结果。

    接入须知:

    此接口获取的为查询token。客户服务端调用相关的查询接口获取查询结果。

    作弊监控服务端接口文档

    支付安全服务端接口文档

    函数原型:

    public static extern void ___getActualRiskToken(int timeout, actualRiskCallBack callBack);
    
    
    参数说明:
    返回值 说明
    Timeout 超时时间(100ms-10000ms)。默认3000ms
    callBack code 状态码 200为正确状态
    token 查询token
    示例代码:

    注册回调

    #if UNITY_IPHONE || UNITY_IOS
    		if (Application.platform == RuntimePlatform.IPhonePlayer)
    		{
                NTESSecProtect.actualRiskCallBack render = new NTESSecProtect.actualRiskCallBack(actualRiskAction);
                NTESSecProtect.___getActualRiskToken(3000,render);
    		}
    #endif
    

    回调函数

    [MonoPInvokeCallback(typeof(NTESSecProtect.actualRiskCallBack))]
    public static void actualRiskAction(int code, string token)
    {
    	UnityEngine.Debug.Log(token);  
    }
    

    12、设置代理闪退模式

    接口用途:

    用于用户使用代理软件(包含VPN、抓包等工具)拦截易盾网络请求时进行闪退处理(正常网络情况下不会闪退)。此功能涉及闪退,建议游戏方进行动态下发配置,不建议将配置硬编码,避免因特殊原因造成的闪退问题。

    接入须知:

    设置此接口可以对以下两类软件进行处理。高危包含Quantymult、Quantymult X、Thor、charles、含拦截功能VPN等。低危包含各类网络加速等。

    注:如果设置此接口后,用户使用了代理软件,且自身的代理网络存在问题,也会视为拦截易盾请求并进行闪退。通过此方式的闪退,由于网络失效数据,将不会上传至易盾服务器。

    函数原型:
    public static void SetVPNCrashType(int type);
    
    
    参数说明:
    返回值 说明
    type 0、不拦截代理(默认为0,不需要进行设置) 1、高危代理拦截闪退 2、全部代理拦截闪退(高危、低危)
    示例代码:
    NTESSecProtect.SetVPNCrashType(1);
    
    
    Online Chat Tel:95163223 Free trial