보안 GUI
iOS 보안 침입에 대한 GUI 구현
Section titled “iOS 보안 침입에 대한 GUI 구현”Xamarin.iOS 프로젝트에서 AppSealing 보안 위협 탐지 시 사용자에게 알림을 표시하는 방법:
보안 위협 탐지
Section titled “보안 위협 탐지”using System;using System.Runtime.InteropServices;using UIKit;
[DllImport("__Internal")]static extern int ObjC_IsAbnormalEnvironmentDetected();
public class SecurityChecker{ public const int DETECTED_JAILBROKEN = 0x01; public const int DETECTED_DRM_DECRYPTED = 0x02; public const int DETECTED_DEBUG_ATTACHED = 0x04; public const int DETECTED_HASH_INFO_CORRUPTED = 0x08; public const int DETECTED_HASH_MODIFIED = 0x10; public const int DETECTED_CODESIGN_CORRUPTED = 0x20; public const int DETECTED_EXECUTABLE_CORRUPTED = 0x40; public const int DETECTED_CERTIFICATE_CHANGED = 0x80;
public static void CheckSecurity() { int tamperFlags = ObjC_IsAbnormalEnvironmentDetected();
if (tamperFlags > 0) { string message = "비정상적인 환경이 탐지되었습니다!";
if ((tamperFlags & DETECTED_JAILBROKEN) > 0) message += "\n - 탈옥된 기기"; if ((tamperFlags & DETECTED_DRM_DECRYPTED) > 0) message += "\n - 실행 파일이 암호화되지 않음"; if ((tamperFlags & DETECTED_DEBUG_ATTACHED) > 0) message += "\n - 앱이 디버깅 중"; if ((tamperFlags & (DETECTED_HASH_INFO_CORRUPTED | DETECTED_HASH_MODIFIED)) > 0) message += "\n - 앱 무결성 손상"; if ((tamperFlags & (DETECTED_CODESIGN_CORRUPTED | DETECTED_EXECUTABLE_CORRUPTED)) > 0) message += "\n - 앱 실행 파일 손상"; if ((tamperFlags & DETECTED_CERTIFICATE_CHANGED) > 0) message += "\n - 앱이 재서명됨";
ShowSecurityAlert(message); } }
private static void ShowSecurityAlert(string message) { var alert = UIAlertController.Create("AppSealing", message, UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("확인", UIAlertActionStyle.Default, (action) => {#if !DEBUG Environment.Exit(0);#endif }));
var window = UIApplication.SharedApplication.KeyWindow; var rootViewController = window.RootViewController; rootViewController.PresentViewController(alert, true, null); }}
ViewDidAppear에서 호출
Section titled “ViewDidAppear에서 호출”public override void ViewDidAppear(bool animated){ base.ViewDidAppear(animated);
SecurityChecker.CheckSecurity();}
이 구현은 탈옥된 기기나 기타 비정상적인 환경에서 앱 실행 시 사용자에게 적절한 경고를 표시합니다.