手游智能反外挂iOS端接入文档(OC)

一、隐私说明

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

二、接入说明

1、接入步骤

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

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

2、文件说明

反外挂SDK在iOS系统下接入需要的相关文件有以下:

RiskPerception.framework
RiskPerceptionBundle.bundle(需要白盒加密时导入)

三、接入步骤

1、导入组件


(1)导入工程

导入RiskPerception.framework文件到您的工程

如需使用白盒加密,导入RiskPerceptionBundle.bundle文件到您的工程。


(2)添加头文件

请将以下代码添加到AppDelegate.m引用头文件的位置。

#import <RiskPerception/NTESRiskPerception.h>

2、权限说明

info.plist文件中添加

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

3、修改项目配置


(1)修改Buding Setting

build settings ->other linker flags,添加 -ObjC-fprofile-instr-generate-lz


(2)关闭bitcode

SDK不支持bitcode需要关闭bitcode


(3)添加依赖库

General -> Frameworks,Libraries,and Embedded Content,添加以下库: AvFoundation.framework CoreTelephony.framework SystemConfiguration.framework libc++.tbd

4、使用SDK


(1)初始化

AppDelegate.m文件didFinishLaunchingWithOptions方法中添加以下初始化代码


a 中国大陆应用
[[KpelleAzuriteCues fomentBevelDeadengo] deadengoBevel:@"APPID"];

b 台湾应用
[[KpelleAzuriteCues fomentBevelDeadengo] changeViewDetailStar:2];
[[KpelleAzuriteCues fomentBevelDeadengo] deadengoBevel:@"APPID"];

c 其他地区应用
[[KpelleAzuriteCues fomentBevelDeadengo] changeViewDetailStar:3];
[[KpelleAzuriteCues fomentBevelDeadengo] deadengoBevel:@"APPID"];

说明
:

设置区域信息的接口: changeViewDetailStar,需要在初始化接口: deadengoBevel之前调用.

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


(2)设置角色信息

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

[[KpelleAzuriteCues fomentBevelDeadengo] sheldonstirpAlunitego:@"xxx" UserName:@"xxx" UserAccount:@"xxx" UserServer:@"xxx" GameJson:@"xxx"];

说明:

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

5、接入验证

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

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

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

四、SDK接入调用说明

1、SDK初始化


接口用途:

用于初始化反外挂SDK。


接入须知:

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


函数原型:

直传模式

- (BOOL)deadengoBevel:(NSString *)app_id;

自动化透传模式

- (BOOL)deadengoBevel:(NSString *)app_id withDefineSpaces:(NSString *)url;

参数说明:
参数说明
app_id不同用户或游戏的唯一标识(非bundleID),可在智能反外挂下的服务管理查询AppID,或者可在群里咨询技术支持人员。AppID示例:I003722234
url透传服务器地址。url示例"https://www.netease163.com"

返回值说明:
返回值说明
错误返回 NO初始化失败
正确返回 YES初始化成功

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] deadengoBevel:@"APPID"];

2、登录接口/设置角色信息


接口用途:

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


函数原型:
- (void)sheldonstirpAlunitego:(NSString *)user_id 
UserName:(NSString *)user_name 
UserAccount:(NSString *)user_account  
UserServer:(NSString *)user_server 
GameJson:(NSString *)game_json;

参数说明:
参数说明
user_id用户ID,建议使用唯一ID。必传参数
user_name用户名称
user_account用户账号
user_name用户所在服务器
game_json自定义数据。请使用json字符串格式

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] sheldonstirpAlunitego:@"163163" 
UserName:@"netease" 
UserAccount:@"wangyiyidun" 
UserServer:@"server" 
GameJson:@"data"];

3、设置自动化透传类型


接口用途:

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


接入须知:

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


函数原型:
- (void)readyForOpportunity:(NSInteger)type;

参数说明:
参数说明
Type1、自动透传模式会自动根据网络情况选择网络传输方案。
2、强制透传模式。默认状态为自动透传模式。完全使用透传方案

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] readyForOpportunity:1];

4、设置区域信息


接口用途:

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


接入须知:

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


函数原型:
- (void)changeViewDetailStar:(NSInteger)type;

参数说明:
参数说明
Type服务器地区类型 1、中国大陆 2、台湾地区 3、非中国大陆地区。

示例代码:
台湾地区应用
[[KpelleAzuriteCues fomentBevelDeadengo] changeViewDetailStar:2];
非中国大陆和台湾地区应用
[[KpelleAzuriteCues fomentBevelDeadengo] changeViewDetailStar:3];

5、退出登陆


接口用途:

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


接入须知:

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


函数原型:
- (void)devastatedMovement;

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] devastatedMovement];

6、心跳系统


接口用途:

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


接入须知:

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


函数原型:
- (void)counselbeaAction:(heartBeatBlock)block;

参数说明:
参数说明
blockvoid (^heartBeatBlock)(NSString *result) result为加密数据

解密后参数说明:
名称标示说明异常情况是否每次必有
序列号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,说明网络异常

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] deadengoBevel:@"APPID"];

7、举报系统


接口用途:

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


接入须知:

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


函数原型:
- (void)reportedRoleInfoUserId:(NSString *)user_id 
UserName:(NSString *)user_name 
UserAccount:(NSString *)user_account 
UserServer:(NSString *)user_server 
Report_desc:(NSString *)report_desc 
VerificationSpan:(NSInteger)verification_span  
ReportType:(NTESRiskReportType)report_type;

参数说明:
参数说明
user_id用户ID,建议使用唯一ID。必传参数。
user_name用户名称
user_account用户账号
user_server用户所在服务器
report_desc举报描述
verification_span查询时间维度。以小时为单位,最大为24小时。建议设置为1
eport_type外挂:NTESRiskReportPlug
工作室:NTESRiskReportStudio

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] successOpportunityComes:@"user_id" 
UserName:@"user_name" 
UserAccount:@"userAccount" 
UserServer:@"userServer"  
Report_desc:@"report_desc"
VerificationSpan:1 
ReportType:NTESRiskReportPlug];

8、数据查询


接口用途:

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


函数原型:
- (NSString *)opportunitiesLikeSunrises:(NTESRiskQueryType)queryType withData:(NSString *)data;

参数说明:
参数说明
queryTypeNTESRiskQuerySignInfo 签名信息
NTESRiskQueryRootStatus 越狱状态
NTESRiskQuerySDKVersion sdk版本
NTESRiskQueryWhiteBox 白盒加密
data白盒加密时需要传入,其他使用可为空

返回值说明:
返回值说明
NSString *对应查询的数据

示例代码:
NSString *result = [[KpelleAzuriteCues fomentBevelDeadengo] opportunitiesLikeSunrises:NTESRiskQuerySignInfo withData:nil];

9、白盒加密


接口用途:

可用于对数据进行加密。


接入须知:

白盒加密每个客户端都有单独的白盒查找表,需要替换RiskPerceptionBundle.bundle文件中pic_error_741.png文件(需要找运营获取)


函数原型:
- (NSString *)opportunitiesLikeSunrises:(NTESRiskQueryType)queryType withData:(NSString *)data;

参数说明:
参数说明
queryTypeNTESRiskQueryWhiteBox 白盒加密
data传入加密数据

返回值说明:
返回值说明
NSString *加密数据

示例代码:
NSString *result = [[KpelleAzuriteCues fomentBevelDeadengo] opportunitiesLikeSunrises:NTESRiskQueryWhiteBox withData:@"白盒加密数据"];

10、自助式透传


接口用途:

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


接入须知:

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


函数原型:
- (NSData *) whetherWeatherPicked;

返回值说明:
返回值说明
NSData *此处获取的数据为body数据。服务端相关设置内容参考服务端接口文档

示例代码:
NSData *result = [[KpelleAzuriteCues fomentBevelDeadengo] whetherWeatherPicked];

11、作弊监控


接口用途:

实时获取作弊监控结果。


接入须知:

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


函数原型:
- (void)memorizerAlarmSpeedometer:(NSInteger)timeout complectionHandler:(actualRiskBlock)block;

参数说明:
返回值说明
Timeout超时时间(100ms-10000ms)。默认3000ms
actualRiskBlockcode 状态码 200为正确状态
token 查询token

示例代码:
[[KpelleAzuriteCues fomentBevelDeadengo] memorizerAlarmSpeedometer:3000 WhiteHannanElegies:^(NSInteger code, NSString *token) {
}];