arm64e / Xcode 26 Enhanced Security 지원 연구
Xcode 26 강화 보안 옵션이 강제하는 통합 바이너리(arm64+arm64e) 환경에서도 AppSuit Premium 6개 모듈이 동작하도록 빌드 후처리 인프라를 선행 확장한 연구·구현
링크
언어
- Swift
- Objective-C
- Python3
기술
- Mach-O
- LIEF
- arm64e
- Fat Binary
- Binary Instrumentation
환경
- Xcode
- Hopper
- Mach-O Viewer
- PyCharm
Xcode 26 의 강화 보안(Enhanced Security) 옵션을 켜면 앱 바이너리가 arm64 와 arm64e 두 슬라이스를 함께 담는 통합 바이너리(Fat Binary)로 강제된다. 그 환경에서도 AppSuit Premium 6개 모듈이 정상 동작하도록, 고객 요청이 오기 전에 빌드 후처리 인프라를 미리 확장했다.
배경·과제
-
강화 보안 옵션이 켜진 앱은 arm64·arm64e 두 종류 코드를 한 파일에 담는 통합 바이너리가 된다. arm64 하나만 가정하던 기존 후처리 인프라로는 보안 솔루션이 동작하지 않았다.
-
고객사의 실제 활성화 요청이 들어오기 전에, 특정 빌드 환경에 의존하지 않고 즉시 대응할 수 있는 구조를 미리 확보해야 했다.
수행·기여
-
정적 라이브러리·고객사 프로젝트·배포 절차 3개 축으로 4개 대응 시나리오를 비교표로 정리했다. 그중 빌드 환경 의존성이 없는 시나리오를 채택했다.
-
빌드 시 새 메모리 할당 방식(Typed Allocation)용 심볼과 구버전 OS 호환용(backdeploy) 심볼이 충돌하는 문제를 정리했다.
-
통합 바이너리의 헤더를 해석해 슬라이스별로 같은 패치 단계를 적용하는 후처리 객체를 새로 만들었다. 단일 슬라이스든 통합 바이너리든 동일한 단계로 처리된다.
-
외부 바이너리 라이브러리를 통합 바이너리로 다시 저장하면 내부 위치값(offset)이 어긋나는 문제가 있었다. 라이브러리 기능을 그대로 쓰는 단계와 바이너리를 직접 다시 쓰는(rewriting) 단계로 나눠 해결했다.
-
Premium 6개 모듈의 Swift 6 환경, 최소 지원 OS 버전, arm64e 슬라이스 빌드 절차를 가이드 비교표로 정리했다.
성과
-
통합 바이너리 처리 객체를 후처리 도구 최근 릴리즈에 반영했고, Premium 에도 일부 기능을 선행 지원했다.
-
고객사가 강화 보안 옵션 활성화를 요청하면 1~2주 안에 대응할 수 있는 환경을 마련했다.