API Hiding — ARM64 CFG 차단
Xcode·Mach-O 구조 변경으로 깨진 AppSuit Premium iOS API Hiding을, 분석 도구의 정적 추적 차단까지 새 구조에 맞춰 3개월 안에 혼자 재작성했습니다.
언어
- 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’이라는 정식 제품 기능으로 자리 잡았습니다.
-
Xcode 26과 arm64e 환경에서 연동 검증을 다시 해야 하는 후속 과제로 이어졌습니다.