iOS API Hiding 연구 (2023-07~09, 리팩토링·성능 최적화)
AppSuit Premium iOS의 API Hiding 기능을 새 Xcode 빌드 환경·바뀐 Mach-O 구조에 맞춰 재작성하고 속도를 끌어올린 연구
언어
- Objective-C
- Python3
기술
- Mach-O
- Binary Instrumentation
- Dynamic Library Injection
환경
- Xcode
- Hopper
- Mach-O Viewer
- Hex Edit
- PyCharm
AppSuit Premium iOS의 API Hiding 기능을 새 Xcode 빌드 환경과 바뀐 Mach-O 구조에 맞춰 다시 작성하고 속도를 끌어올린 연구입니다. 어셈블리 단계에서 API 호출 분기를 바꿔, 분석 도구가 코드 흐름을 따라가지 못하게 막았습니다.
배경·과제
-
API Hiding은 앱의 API 호출을 가려 정적 분석을 어렵게 만드는 기능으로, AppSuit Premium iOS가 초기부터 제공해 왔습니다.
-
2023년 Xcode 업데이트와 Swift 변화로 기존 로직이 일부 상황에서 불안정해졌습니다. 재작성과 함께 호출 함수 수를 줄여 속도까지 끌어올려야 했습니다.
수행·기여
-
3개월간 기존 로직을 분석하고, 최신 Mach-O 구조와 ARM64 명령어 패턴에 맞춰 다시 작성한 뒤 속도를 최적화해 제품에 반영했습니다.
-
어셈블리 단계에서 API 호출 분기를 조작해 원래 호출 대상을 숨기고, 분석 도구가 제어 흐름 그래프(CFG)를 따라가지 못하게 막았습니다.
-
Mach-O 바이너리 안의 어셈블리를 읽고 고치는 Python 도구를 직접 만들었습니다. Swift 문자열 암호화 트랙에서 쓰던 Mach-O ARM64 분석 인프라와 함께 씁니다.
성과
-
정식 제품에 반영됐고, 이후 ‘Dynamic API Hiding’이라는 정식 제품 기능으로 자리 잡았습니다.
-
같은 로직이 Air에서는 외부 보호 모듈을 통째로 끼워 넣는 framework drop-in 방식으로, Premium에서는 빌드 후처리 단계에서 각각 쓰이며 회사 공통 자산이 됐습니다.
-
Xcode 26과 arm64e 환경에서 연동 검증을 다시 해야 하는 후속 과제로 이어졌습니다.