본문으로 건너뛰기
버전: Next

주요 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_CUSTOMMACROMODECustom Macro 규칙으로 적용되어 탐지를 시작하는 함수입니다.
void APPGUARD_STOP_CUSTOMMACROMODEDefault Macro 규칙으로 적용되어 탐지를 시작하는 함수입니다.

APPGUARD_INIT

void APPGUARD_INIT(PAPPGUARDAPPCALLBACK)

APPGUARD_INIT 함수는 AppGuard를 초기화하는 함수입니다. 따라서 앱이 실행될 때 가장 먼저 호출하는 것을 권장합니다.

매개변수설명
PAPPGUARDAPPCALLBACKAppGuard SDK로 부터 결과를 전달 받는 콜백 함수

APPGUARD_INIT 함수는 아래 예시와 같이 AppDelegate.m 혹은 AppDelegate.mm 파일의 application:didFinishLaunchingWithOptions: 함수 내부에서 호출하는 것을 권장합니다.

AppDelegate.m 또는 AppDelegate.mm
#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");

APPGUARD_SET_CERTIFICATION_ID

void APPGUARD_SET_CERTIFICATION_ID(const char* clientId, int retryTimeout)

APPGUARD_SET_CERTIFICATION_ID 함수는 서버 인증에 사용되는 사용자 식별 키와 서버인증 재시도 시간을 설정할 수 있습니다.

매개변수설명
clientIdUniqueClientID 키 포맷을 준수하는 게임 서버에서 생성한 사용자 식별 값
retryTimeout서버인증 재시도 허용시간(초)

클라이언트에서 인증 시도한 UniqueClientID는 세션 구분을 위해 서버에서 인증 확인 요청시 동일한 ID를 사용해야 합니다. UniqueClientId는 반드시 Formatted-Unique-Client-ID 규칙을 준수해야 합니다.
Formatted-Unique-Client-ID 의 형식은 UniqueID:TimeStamp:LicenseKey 입니다.

항목타입설명
UniqueIDchar(40)사용자 별 SHA1 또는 40자로 구성된 클라이언트 유일 식별 값
TimeStampchar(13)UTC 기반의 13자리로 구성된 세션이 생성된 시간
LicenseKeystring해당 Application에 발부된 AppGuard License Key

아래 예시와 같이 APPGUARD_SET_CERTIFICATION_ID함수의 매개변수로 Formatted-Unique-Client-ID 포맷에 맞게 서버 인증에 사용되는 사용자 식별 값과 서버인증 재시도 허용시간 값을 설정할 수 있습니다.

#import <AppGuardCore/AppGuard.h>

// UniqueClientID 을 인자로 전달
APPGUARD_SET_CERTIFICATION_ID("UniqueID:TimeStamp:LicenseKey", 180);
정보

만약 UniqueClientID 값을 null로 입력할 경우 AppGuard 내부에서 랜덤한 UniqueClientID를 생성합니다. 생성된 UniqueClientIDAPPGUARD_INIT 호출 시 등록한 APPGUARDAPPCALLBACK 함수를 통해 전달 받을 수 있습니다.

서버 인증 재시도 retryTimeout 시간 값의 설정 범위는 0 ~ 180초이며, 0 으로 설정 시 재시도를 하지 않습니다.
시간 값의 설정 범위 값을 180 으로 설정 시 3분동안 약 15번의 인증 재시도를 수행합니다.


APPGUARD_SET_RESERVED1

void APPGUARD_SET_RESERVED1(int value, int option)

APPGUARD_SET_RESERVED1 함수는 현재 AppGuard의 추가 기능 수행을 설정할 수 있는 함수입니다. 아래 표와 같이 3가지 기능이 존재하며, 설정 값에 따라 기능 제공이 달라집니다.

항목설명
FUNCTION_MACRO_RESTART0x10000000매크로 탐지를 초기화하여 재시작합니다. 이미 매크로 탐지로 진단된 경우라도, 재진단 시 탐지 이벤트를 발생합니다.
FUNCTION_PROXY_DETECTION0x20000000현재 디바이스에서 Proxy Host 서버를 사용 중인지를 탐지하는 기능을 제공합니다. 해당 기능은 호출할 때 마다 1회 검사를 수행합니다. (다중 호출 가능)
FUNCTION_AUTH_REGION0x30000000서버인증에 사용할 인증서버의 국가를 설정할 수 있습니다. 현재 지원되는 국가는 한국과 중국 2개의 국가 설정만 지원하며, 해당 메소드의 Option 값 으로 지원되는 국가를 설정할 수 있습니다.
option = 0 : 한국 인증 서버
option = 2 : 중국 인증 서버

아래 예제와 같이 APPGUARD_SET_RESERVED1 함수 내의 매개변수 값에 따라 매크로 탐지를 초기화하고 재시작할지, Proxy Host 탐지 기능을 제공받을지, 서버인증할 국가를 설정할지 설정할 수 있습니다.

#import <AppGuardCore/AppGuard.h>

APPGUARD_SET_RESERVED1(FUNCTION_MACRO_RESTART);
...
APPGUARD_SET_RESERVED1(FUNCTION_AUTH_REGION, 0);

APPGUARD_SET_RESERVED2

void APPGUARD_SET_RESERVED2(const char* url)

APPGUARD_SET_RESERVED2 함수는 서버인증(Server-Side Authentication)하기 위한 서버인증의 주소를 설정합니다.

매개변수설명
url인증을 시도할 서버인증(Server-Side Authentication) 서버의 주소

아래 예제와 같이 적용 시 APPGUARD_SET_RESERVED2 함수의 매개변수로 인증할 서버인증(Server-Side Authentication)의 주소를 URL 포맷에 맞게 추가하여 설정할 수 있다.

#import <AppGuardCore/AppGuard.h>

APPGUARD_SET_RESERVED2("https://c4-auth.appguard.co.kr");
주의

서버 인증을 수행하는 APPGUARD_SET_CERTIFICATION_ID 메소드를 호출하기 전에만 해당 메소드로 수행할 서버의 주소를 변경할 수 있습니다.


APPGUARD_START_CUSTOMMACROMODE

void APPGUARD_START_CUSTOMMACROMODE()

Macro 탐지 정책 기능이

APPGUARD_START_CUSTOMMACROMODE 함수는 Custom Macro 규칙이 적용된 매크로 탐지 기능을 수행합니다.

아래 예제와 같이 APPGUARD_START_CUSTOMMACROMODE 함수를 적용 시 Custom Macro 규칙으로 Macro 정책 탐지가 진행됩니다.

#import <AppGuardCore/AppGuard.h>

APPGUARD_START_CUSTOMMACROMODE();

APPGUARD_STOP_CUSTOMMACROMODE

void APPGUARD_STOP_CUSTOMMACROMODE()

APPGUARD_STOP_CUSTOMMACROMODE 함수는 Macro 탐지 기능이 Custom 규칙이 아닌 Default Macro 규칙으로 적용되어 탐지를 시작합니다.

아래 예제와 같이 APPGUARD_STOP_CUSTOMMACROMODE 함수를 적용 시 Default Macro 규칙으로 Macro 정책 탐지가 진행됩니다.

#import <AppGuardCore/AppGuard.h>

APPGUARD_STOP_CUSTOMMACROMODE();

warning

CustomMacroMode 에 대해 더 자세한 내용이 필요하시면, appguard@inca.co.kr 또는 담당자에게 문의 바랍니다.