주요 API 설명
AppGuard SDK iOS API Reference
문서 개요
이 문서는 nProtect AppGuard iOS SDK 의 API 사용 방법을 설명한 문서입니다.
제공하는 API 목록
| API 이름 | 설명 |
|---|---|
| void APPGUARD_INIT(APPGUARDAPPCALLBACK) | AppGuard 구동 시작하는 함수입니다. |
| void APPGUARD_SET_USER_ID(const char* userId) | 정책 위반 탐지 시 로그 서버에 기록되는 사용자의 ID를 설정하는 함수입니다. |
| void APPGUARD_SET_CERTIFICATION_ID(const char* clientId, int retryTimeout) | 서버 인증에 사용되는 사용자 식별 키와 서버인증 재시도 시간을 설정하는 함수입니다. |
| void APPGUARD_SET_RESERVED1(int value, int option) | AppGuard 추가 전용 기능을 수행하는 함수입니다. |
| void APPGUARD_SET_RESERVED2(const char* url) | 서버인증(Server-Side Authentication) 서버의 주소를 설정하는 함수입니다. |
| void APPGUARD_START_CUSTOMMACROMODE | Custom Macro 규칙으로 적용되어 탐지를 시작하는 함수입니다. |
| void APPGUARD_STOP_CUSTOMMACROMODE | Default Macro 규칙으로 적용되어 탐지를 시작하는 함수입니다. |
APPGUARD_INIT
void APPGUARD_INIT(PAPPGUARDAPPCALLBACK)
APPGUARD_INIT 함수는 AppGuard를 초기화하는 함수입니다. 따라서 앱이 실행될 때 가장 먼저 호출하는 것을 권장합니다.
| 매개변수 | 설명 |
|---|---|
PAPPGUARDAPPCALLBACK | AppGuard SDK로 부터 결과를 전달 받는 콜백 함수 |
APPGUARD_INIT 함수는 아래 예시와 같이 AppDelegate.m 혹은 AppDelegate.mm 파일의
application:didFinishLaunchingWithOptions:
함수 내부에서 호출하는 것을 권장합니다.
#import <AppGuardCore/AppGuard.h>
#import <AppGuardCore/AppGuardDefine.h>
//. AppGuard SDK 로 부터 결과를 전달 받을 콜백 함수를 아래와 같이 정의
static void APPGUARDAPPCALLBACK(int type, int code, const char* desc)
{
. . .
}
// 앱이 시작되는 시점
- (Bool)application:(UIApplication *)application didFinishLaunchingWithOption:(NSDictionary *) launchOptions {
APPGUARD_INIT(APPGUARDAPPCALLBACK);
}
APPGUARDAPPCALLBACK 콜백 함수가 정상적으로 등록되었다면, AppGuard SDK가 수행한 탐지 내역이 등록된 콜백 함수를 통해 확인할 수 있습니다.
APPGUARDAPPCALLBACK
typedef void (*PAPPGUARDAPPCALLBACK)(int type, int code, const char *pData);
APPGUARDAPPCALLBACK 함수는 고객사에서 반드시 구현해야 하는 함수입니다. AppGuard 보안 서비스의 동작 과정 및 보안 위반에 대한 이벤트를 수신할 콜백 함수입니다. 해당 함수는 APPGUARD_INIT 함수에 파라미터로 전달되어야 합니다.
| 매개변수 | 설명 |
|---|---|
int type | 보안 서비스의 종류 - Event, Report, Kill |
int code | 보안 서비스의 정책 종류 |
const char* desc | 보안 위반 행위에 대한 상세 정보 |
APPGUARDAPPCALLBACK 함수는 고객사에서 반드시 구현하고, APPGUARD_INIT 호출 시 파라미터로 전달되어야 합니다.
아래 예제와 같이 적용 시 APPGUARDAPPCALLBACK 함수 적용 시 해당 매개변수를 통해 AppGuard SDK로부터 결과를 전달 받을 수 있습니다.
static void APPGUARDAPPCALLBACK(int type, int code, const char* desc) {
if( type == APPGUARD_TYPE_EVENT ) {
if( code == APPGUARD_EVENT_INITIALIZED ) {
//. 엔진 초기화가 완료 되었습니다.
} else if( code == APPGUARD_EVENT_START ) {
//. 엔진이 시작 되었습니다.
} else if( code == APPGUARD_EVENT_STOP ) {
//. 엔진이 중지 되었습니다.
}
} else if( type == APPGUARD_TYPE_DETECT ) {
if( code == DETECT_IOS_INVALID_EXECUTION_FILE ) {
/**
* 원본 실행 파일의 변조가 탐지되었습니다.
* desc : 탐지된 정보
*/
}
. . .
else if( code == DETECT_IOS_DEVELOPMENT_BUILD ) {
/**
* AppStore에서 배포되지 않은 실행 상태가 탐지되었습니다.
* desc : 탐지된 정보
*/
}
} else if( type == APPGUARD_TYPE_ERROR ) {
if( code == APPGUARD_ERROR_APPGUARD_INIT ) {
/**
* 엔진 초기화에 실패하였습니다.
*/
}
} else if( type == APPGUARD_TYPE_S2AUTH_CALLBACK ) {
if( code == APPGUARD_TYPE_CSAUTH_SUCESS ) {
/**
* 서버 인증 작업이 성공하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행 하여 주시기 바랍니다.
*
* desc : 서버인증용 아이디 (UniqueClientID)
*/
} else if( code == APPGUARD_TYPE_CSAUTH_RETRY ) {
/**
* 서버 인증 작업을 진행 중입니다.
* 무시 하셔도 됩니다.
*/
} else if( code == APPGUARD_TYPE_CSAUTH_FALSE ) {
/**
* 서버 인증 작업이 실패하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행 하여 주시기 바랍니다.
* 서버인증 작업이 실패한 사유가 클라이언트의 네트워크 문제로 인하여 실패할 수 있으므로
* 게임서버를 통한 재검증 작업을 꼭 진행하여 주시기 바랍니다.
*/
}
} else if( type == APPGUARD_TYPE_KILL ) {
/**
* 탐지내용이 정책에 의해 kill option으로 설정되어 있는 경우 통지하고, 강제 종료를 요청합니다.
* 해당 메세지 통지가 감지 되면 APP을 강제 종료 해야 합니다.
* 종료 방식은 메세지창을 통한 통보 후 앱을 종료 하는 것 을 권장합니다.
*/
}
}
APPGUARD_SET_USER_ID
void APPGUARD_SET_USER_ID(const char* userId)
APPGUARD_SET_USER_ID 함수는 AppGuard 정책 위반 탐지 시 로그 서버에 기록하는 사용자의 ID를 설정할 수 있습니다.
| 매개변수 | 설명 |
|---|---|
const char* | 로그 서버에 기록할 사용자의 ID |
아래 예시와 같이 APPGUARD_SET_USER_ID 함수의 매개변수로 기록할 사용자 ID를 문자열로 등록하여 설정할 수 있습니다.
#import <AppGuardCore/AppGuard.h>
APPGUARD_SET_USER_ID("user_id");