iOS 보안 알림을 위한 GUI 추가
앱 내의 DoveRunner Mobile App Security 라이브러리는 앱이 실행된 직후 자동으로 활성화됩니다. DoveRunner Mobile App Security 라이브러리가 비정상적인 환경(탈옥된 기기, 실행 파일이 복호화되었거나 디버거가 연결됨)을 감지하면 사용자 액션과 관계없이 20초 후에 앱을 종료하므로, 앱은 탐지 결과를 사용자에게 알리고 사용자가 자신의 기기에 잘못된 환경이 있음을 인식할 수 있도록 적절한 메시지 상자를 표시해야 합니다.
앱에서 해당 대화 상자를 표시하려면 “ViewController.swift” 파일에 작은 코드 청크를 삽입하여 쉽게 수행할 수 있습니다. (Objective-C 기반 프로젝트의 경우 ViewController.mm)
앱에서 UIAlertController 창 표시
Section titled “앱에서 UIAlertController 창 표시”먼저 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]; }}
탐지 플래그 설명
Section titled “탐지 플래그 설명”DETECTED_JAILBROKEN
: 기기가 탈옥되었음을 감지DETECTED_DRM_DECRYPTED
: 실행 파일이 FairPlay DRM으로 암호화되지 않았음을 감지DETECTED_DEBUG_ATTACHED
: 디버거가 연결되었음을 감지DETECTED_HASH_INFO_CORRUPTED
/DETECTED_HASH_MODIFIED
: 앱 무결성이 손상되었음을 감지
이 코드를 통해 사용자는 보안 위협이 감지되었을 때 적절한 경고 메시지를 받을 수 있습니다.