AppSuit Premium — Swift 바이너리 보호 3종
Swift 앱에서 문자열·클래스 이름·시스템 API 호출이 그대로 노출되던 문제를, 문자열 암호화·클래스명 난독화(2023 상반기)와 동적 API 숨김(2023 하반기)으로 막아 AppSuit Premium에 적용했습니다.
언어
- Swift
- Objective-C
- Python3
기술
- Mach-O
- LIEF
- Binary Instrumentation
- LC_SYMTAB
환경
- Xcode
- Hopper
- Mach-O Viewer
- PyCharm
Objective-C 앱에서 막아주던 보호가 Swift 영역에는 적용되지 않아 문자열·클래스 이름·시스템 기능 호출이 분석 도구에 그대로 드러났습니다. 이 공백을 문자열 암호화·클래스 이름 난독화(2023 상반기)와 동적 API 숨김(2023 하반기)으로 채워 AppSuit Premium에 적용했습니다.
배경·과제
-
2022년 말부터 2023년 봄 사이 Swift 앱 보호를 요구하는 고객사가 빠르게 늘었습니다. 하지만 기존 Objective-C 보호 수준이 Swift에는 그대로 돌아가지 않았습니다.
-
분석 도구로 보면 문자열과 클래스 이름, 호출하는 시스템 기능 이름이 그대로 노출됐습니다. 이 약점을 제품 차원에서 메워야 했습니다.
수행·기여
-
문자열 암호화(Swift String Encryption)는 소스의 문자열을 암호화된 상태로 앱에 넣고, 실행 시점에만 복원하게 했습니다.
-
클래스 이름 난독화(Swift Class Name Obfuscation)는 분석 도구에 의미 없는 형태로 보이게 했습니다. NSCoding·NSKeyedArchiver·Reflection 경로에는 이름을 유지하는 예외 규칙(Exclude Rule) 옵션을 직접 설계했습니다.
-
동적 API 숨김(Dynamic API Hiding)은 시스템 기능 이름을 실행 중에만 찾아 연결하게 해(dlsym·objc_msgSend 기반 런타임 동적 해석), 분석 도구에서 보이지 않게 했습니다.
-
앱 기동 속도를 유지하려고 무거운 암호 방식 대신 복원 비용이 낮은 경량 변환 구조를 썼습니다.
-
iOS 앱 바이너리(Mach-O ARM64)를 직접 분석하는 Python 도구를 만들어 결과를 바이너리 수준에서 검증했습니다. 이 도구는 QA 자동화, 후속 인력 지도, 이후 제품 검증에도 재사용했습니다.
성과
-
AppSuit Premium iOS 기능 명세서에 정식 메뉴로 들어갔고 고객 가이드에도 포함됐습니다.
-
iOS 팀 회의 안건에 검증 절차가 공식 수록됐습니다.
-
2026년엔 크로스 플랫폼 앱(React Native·Flutter) 문자열 암호화 연구 트랙으로 이어졌습니다.