콘텐츠로 이동

iOS 보안 알림을 위한 GUI 추가

앱 내의 DoveRunner Mobile App Security 라이브러리는 앱이 실행된 직후 자동으로 활성화됩니다. DoveRunner Mobile App Security 라이브러리가 비정상적인 환경(탈옥된 기기, 실행 파일이 복호화되었거나 디버거가 연결됨)을 감지하면 사용자 액션과 관계없이 20초 후에 앱을 종료하므로, 앱은 탐지 결과를 사용자에게 알리고 사용자가 자신의 기기에 잘못된 환경이 있음을 인식할 수 있도록 적절한 메시지 상자를 표시해야 합니다.

앱에서 해당 대화 상자를 표시하려면 “ViewController.swift” 파일에 작은 코드 청크를 삽입하여 쉽게 수행할 수 있습니다. (Objective-C 기반 프로젝트의 경우 ViewController.mm)

먼저 Xcode 프로젝트를 열고 “ViewController.swift” 파일을 엽니다.

swift 파일을 연 후 다음 코드를 넣습니다 (ViewController.swift 파일에 이미 ‘viewDidAppear’ 메서드가 포함되어 있다면 ‘super.viewDidAppear( animated );’ 줄 아래에 다음 코드의 본문만 삽입하세요.)

Swift 프로젝트용 ‘ViewController.swift’에 넣을 간단한 UI 코드

override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear( animated );
let inst: AppSealingInterface = AppSealingInterface();
let tamper: Int32 = inst._IsAbnormalEnvironmentDetected();
if ( tamper > 0 )
{
var msg = "비정상적인 환경이 감지되었습니다 !!";
if ( tamper & DETECTED_JAILBROKEN ) > 0
{ msg += "\n - 탈옥됨"; }
if ( tamper & DETECTED_DRM_DECRYPTED ) > 0
{ msg += "\n - 실행 파일이 암호화되지 않음"; }
if ( tamper & DETECTED_DEBUG_ATTACHED ) > 0
{ msg += "\n - 앱이 디버그됨"; }
if ( tamper & ( DETECTED_HASH_INFO_CORRUPTED | DETECTED_HASH_MODIFIED )) > 0
{ msg += "\n - 앱 무결성이 손상됨"; }
let alertController = UIAlertController( title: "보안 경고",
message: msg, preferredStyle: .alert );
alertController.addAction( UIAlertAction( title: "확인", style: .default ));
self.present( alertController, animated: true, completion: nil );
}
}

Objective-C 프로젝트용 ‘ViewController.mm’에 넣을 간단한 UI 코드

#include "AppsealingiOS.h"
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
int tamper = ObjC_IsAbnormalEnvironmentDetected();
if ( tamper > 0 )
{
NSString *msg = @"비정상적인 환경이 감지되었습니다 !!";
if ( tamper & DETECTED_JAILBROKEN )
msg = [msg stringByAppendingString:@"\n - 탈옥됨"];
if ( tamper & DETECTED_DRM_DECRYPTED )
msg = [msg stringByAppendingString:@"\n - 실행 파일이 암호화되지 않음"];
if ( tamper & DETECTED_DEBUG_ATTACHED )
msg = [msg stringByAppendingString:@"\n - 앱이 디버그됨"];
if ( tamper & ( DETECTED_HASH_INFO_CORRUPTED | DETECTED_HASH_MODIFIED ))
msg = [msg stringByAppendingString:@"\n - 앱 무결성이 손상됨"];
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"보안 경고"
message:msg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *confirm = [UIAlertAction actionWithTitle:@"확인"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) { }];
[alert addAction:confirm];
[self presentViewController:alert animated:YES completion:nil];
}
}
  • DETECTED_JAILBROKEN: 기기가 탈옥되었음을 감지
  • DETECTED_DRM_DECRYPTED: 실행 파일이 FairPlay DRM으로 암호화되지 않았음을 감지
  • DETECTED_DEBUG_ATTACHED: 디버거가 연결되었음을 감지
  • DETECTED_HASH_INFO_CORRUPTED / DETECTED_HASH_MODIFIED: 앱 무결성이 손상되었음을 감지

이 코드를 통해 사용자는 보안 위협이 감지되었을 때 적절한 경고 메시지를 받을 수 있습니다.