본문 바로가기

[참고] 탐지/차단 메시지 팝업을 커스터마이징 하는 방법!

NHN AppGuard는 어뷰징 탐지 시 아래와 같이 팝업창으로 알림 기능을 제공하고 있습니다.

 

다만, 많은 고객 분들이 코드만 보고 어떠한 사유로 종료가 되었는지 알 수 없어 불편함을 느끼시는 경우가 종종 있으셨을 텐데요.

이러한 불편함을 겪지 않게 하기 위해 고객사에서 직접 구현한 커스텀 팝업을 이용하는 방법을 안내드리려고 합니다.


탐지 메시지는 SDK연동을 통해서 커스터마이징이 가능합니다.

우선 Diresu.o를 통해 탐지 및 차단 시 호출될 수 있는 콜백 함수 등록이 필요합니다.

 

// classPath: Callback 함수가 구현된 class의 full 경로
// functionName: Callback 함수명
// isUnity: Unity 앱 여부
// useMsgBox: NHN AppGuard 탐지, 차단 팝업 활성화 여부
void o(String classPath, String functionName, boolean isUnity, boolean useMsgBox);

 

다만,  NHN AppGuard 팝업이 아니라 직접 구현한 팝업을 활성화시키기 위해서는 useMsgBox 값에 false로 설정하신 후 각 콜백에 맞는 메시지를 만드시면 됩니다. 


 

◆ Diresu.o 사용 예시

 

       1) AOS(Android)

 

package com.nhnent.test

public class AppGuard {
	public void static Callback(String msg) {
	}

public class MainActivity extends Activity {
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Diresu.o(“com/nhnent/test/AppGuard”, “Callback”, false, false);
	}
}

 

Diresu.o를 통해 등록한 콜백 함수의 msg 값으로 하단 json 형태의 string 값을 전달해 줍니다.

 

{
   "info": {
      "type": 2,
      "data": "401"
   }
}

 

(콜백 함수로 전달되는 msg 값은 Base64로 인코딩 되어 있습니다. 따라서 Base64로 디코딩 작업이 필요합니다.)

type의 값을 통해 탐지 여부를 확인할 수 있고, data 값을 통해 탐지 사유를 확인할 수 있습니다.

 

  • type
    • 2: 탐지
    • 4: 차단
  • data
    • 401: 서명 탐지

data 값이 의미하는 탐지 패턴은 가이드 문서 5.2 콜백 데이터 테이블에서 확인 가능합니다.


       2) iOS

 

해당 예시에서는 AppguardHandler 함수가 콜백을 받게 되는 함수이며, 파라미터로 받는 aa 안에 결괏값이 들어가게 되는데, 그 결괏값을 기반으로 핸들링하실 수 있습니다.

 

// 콜백 함수 선언
- (void) CallbackSample: (NSString*) json {
    NSLog(@"Callback called: %@",json);
}

// 콜백 함수 등록
IMP CALLBACK = [self methodForSelector:@selector(CallbackSample:)];
[Diresu o:CALLBACK :false];

 

탐지 이벤트 발생 시 JSON 문자열을 콜백 함수로 전달합니다.

 

  • JSON 문자열 예시
{
"info" : {
"type" : 2,
"data" : "100047"
}
}

 

    • type
      • 1: 로그만 남기고 앱을 종료하지 않는 이벤트(detected)
      • 2: 앱을 바로 종료해야 하는 탐지 이벤트(blocked)
      • 4: 조건 차단 정책에 의한 차단 이벤트
    • data
      • 100047: 탈옥
  •  

iOS 가이드문서의 '8.1 콜백 함수 내용' 항목을 참고하시면 되며 '8.2.2 탐지유형' 항목에서 각 해킹 유형 별 핸들링을 하실 수 있습니다.


       3) Unity > iOS

 

Unity> iOS의 경우 아래와 같이 Unity 콜백 함수 등록을 진행해 주시면 됩니다.

 

// Callback 함수 선언
[MonoPInvokeCallback(typeof(NativeDelegateNotification))]
public static void AppguardHandler(string aa) {
Debug.Log ("Unity Callback : " + aa);
}
// Callback 함수 등록
c (AppguardHandler, false);

 

  • JSON 문자열 예시
{
"RT" : "R0",
"PN" : "MP0",
"PG" : "M0"
}

 

  • RT: 대응 유형
  • PN: 패턴명
  • PG: 패턴 그룹
  • RT
    • R0: 로그만 남기고 앱을 종료하지 않는 이벤트(detected)
    • R1: 앱을 바로 종료해야 하는 탐지 이벤트(blocked)
  • PN
    • MP0: 메모리 변조

Unity 가이드문서의 '5.1 콜백 함수 내용' 항목을 참고하시면 되며 '5.2.2 탐지유형' 항목에서 각 해킹 유형 별 핸들링을 하실 수 있습니다.


 

SDK 가이드 문서는 NHN Cloud> Console> NHN AppGuard 서비스 선택> 앱보호> SDK 다운로드를 통해 다운로드하실 수 있습니다.

이제 탐지/차단 메시지 팝업 커스터마이징을 통해 App 고유의 탐지 메시지 팝업을 구현해 보세요 :)